正则表达式搜索并替换为2个条件

时间:2011-03-02 15:23:57

标签: regex

我想在文件中进行搜索和替换。

搜索将是文件名(在文本文件中),其扩展名为.xml。 通过.xml扩展名查找位置并更改其前面的文本。

,即在“emission_mazda_3_c1_zjz6_16_ 05 _ho2s_front.xml”文本中找到此行,并将文本替换为“emission_mazda_3_c1_zjz6_16_ 04 _ho2s_front.xml”。

任何帮助将不胜感激, 谢谢 托米

1 个答案:

答案 0 :(得分:0)

这取决于你使用正则表达式的内容,所以我举了几个例子。

使用BRE你可以使用:

s/\(emission_mazda_3_c1_zjz6_16_\)\(05\)\(_ho2s_front.xml\)/\104\3/

当Vim使用BRE时,在整个文档中执行此操作将是:

%s/\(emission_mazda_3_c1_zjz6_16_\)\(05\)\(_ho2s_front.xml\)/\104\3/

或者使用也使用BRE的sed输出stdout文件input.txt并替换为:

sed -e 's/\(emission_mazda_3_c1_zjz6_16_\)\(05\)\(_ho2s_front.xml\)/\104\3/' input.txt

使用ERE时,您可以使用:

s/(emission_mazda_3_c1_zjz6_16_)(05)(_ho2s_front.xml)/\104\3/

所有这一切的诀窍是使用反向引用。前两个/字符之间的文字描述了您要查找的内容,并使用()字符进行分组。最后两个/字符之间的文本是您要替换它的内容。所以你要说用第一组替换找到的文本(\1表示这个),然后放04,然后添加第三组(\3表示这一点)。