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

Python 如何在Ubuntu中使用脚本搜索和替换文本文件中的模式,python,regex,bash,shell,grep,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) 我还想替换所有引用 请建议如何在脚本中执行此操作,以便在多个文件上运行。在Linux上,您可以在shell中

我在文件中有以下文本:

@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)
我还想替换所有引用


请建议如何在脚本中执行此操作,以便在多个文件上运行。

在Linux上,您可以在shell中执行类似操作:

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

请注意,末尾的
文件
将是您的文件名或模式,如
*.txt
。您可以在
sed
之后添加一个
-i
(在它们之间留一个空格)以“就地”编辑文件,这意味着这些文件实际上将被编辑。您应该首先备份这些文件,因为这样会更改它们。您还可以在
-i
之后抛出一个扩展名,如
-ibak
,该扩展名应在每个文件运行时使用
.bak
扩展名创建备份,但请再次检查您的sed版本是否执行此操作(即
手动sed
并读取
-i
)。

您是否在Linux上?您可以在Linux shell中使用
sed
命令轻松地完成这项工作。基本的搜索/替换对于SO和Python来说是个糟糕的问题。sed、regex、基本字符串manip。