我有一个由CMS生成的XML文件,它表示应该为可触摸应用程序显示哪些UI按钮。请查看以下内容:
</GlobalMenu>
<Buttons>
<Button name="salford_121"/>
<Button name="salford_197" title="SkillsWorkshop"/>
<Button name="salford_121"/>
<Button name="salford_190" title="Salford Students"/>
<Button name="salford_121"/>
<Button name="GlobalMenu.xml" title="Main Menu"/>
</Buttons>
</GlobalMenu>`在生成此文件时,我需要运行一个bash脚本来删除title="xxxxx",在每行的末尾保留/>。标题可以是任何字母数字字符和符号序列,最长80个字符,包括空格。我还需要它忽略带有title="Main Menu"的行,这样才不会删除返回到GlobalMenu.xml文件的菜单的go back函数。它还将备份到custom.bak文件。
我正在翻遍所有的Regex教程,但我发现很难使用sed或grep来编写更改随机子字符串的东西,因为这些标题可以是任何东西。请原谅我的无礼,我才做了5天。
发布于 2016-01-19 00:25:52
您可以使用此sed
sed -i.bak '/ title="Main Menu"/!s/ title="[^"]*"//' file.xml
cat file.xml
</GlobalMenu>
<Buttons>
<Button name="salford_121"/>
<Button name="salford_197"/>
<Button name="salford_121"/>
<Button name="salford_190"/>
<Button name="salford_121"/>
<Button name="GlobalMenu.xml" title="Main Menu"/>
</Buttons>
</GlobalMenu>发布于 2016-01-19 00:24:01
您要查找的是.特殊字符,它可以匹配任何内容。但是,您希望像[a-zA-Z ]这样的内容能够匹配只包含字母和空格的字符串(.很贪婪)。如果还想包含数字,可以指定\d:[a-zA-Z \d]
/title="[a-zA-Z \d]"/g我也倾向于使用regexpal.com来仔细检查我的搜索字符串。
https://stackoverflow.com/questions/34859343
复制相似问题