如何使用Ubuntu中的脚本在文本文件中搜索和替换模式

时间:2013-12-15 08:07:04

标签: python regex bash shell grep

我在文件中有以下文字:

@XmlElement(namespace = "urn:ietf:params:xml:ns:icalendar-2.0", required = true)

我想将其替换为:

@Namespace(reference="urn:ietf:params:xml:ns:icalendar-2.0")
@Element(required = true)

我也想替换所有的事件。

请在脚本中建议如何在多个文件上运行。

1 个答案:

答案 0 :(得分:1)

在Linux上你可以在shell中做这样的事情:

sed 's/@XmlElement(namespace = \(".*"\), \(required = true\))/@Namespace(reference=\1)\n@Element(\2)/' files

请注意,最后的files将是您的文件名称或模式,例如*.txt。您可以在-i之后添加sed(在它们之间留一个空格)来编辑“就地”文件,这意味着文件将被实际编辑。您应该首先备份文件,因为这会更改它们。你也可以在-i之后抛出一个扩展名,就像-ibak一样,它应该为每个文件创建一个.bak扩展名的备份,但请仔细检查你的sed版本是否有效这个(即man sed并阅读-i)。