使用sed或grep(或任何其他正则表达式解决方案)删除部分随机字符串

时间:2016-01-18 16:19:21

标签: regex bash awk sed

我有一个由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>`

生成此文件时,我需要运行一个删除title="xxxxx"的bash脚本,并在每行末尾留下/>。标题可以包含任何字母数字字符序列和长达80个字符的符号,包括空格。我还需要它忽略title="Main Menu"行,以便不删除返回GlobalMenu.xml文件的菜单的go back函数。它也将备份到custom.bak文件。

我正在浏览任何正则表达式的教程,但我发现很难用sed或grep编写一些东西来改变RANDOM子串,因为这些标题可能是任何东西。请原谅我的noobness我只在这5天。

2 个答案:

答案 0 :(得分:4)

您可以使用此str()

sed

答案 1 :(得分:-1)

您正在寻找符合任何内容的.特殊字符。但是,您需要更像[a-zA-Z ]的内容来匹配仅包含字母和空格的字符串(.是贪婪的)。如果您还想包含数字,可以指定\ d:[a-zA-Z \d]

/title="[a-zA-Z \d]"/g

我也倾向于使用regexpal.com来仔细检查我的搜索字符串。