我想在文件中进行搜索和替换。
搜索将是文件名(在文本文件中),其扩展名为.xml。 通过.xml扩展名查找位置并更改其前面的文本。
,即在“emission_mazda_3_c1_zjz6_16_ 05 _ho2s_front.xml”文本中找到此行,并将文本替换为“emission_mazda_3_c1_zjz6_16_ 04 _ho2s_front.xml”。
任何帮助将不胜感激, 谢谢 托米
答案 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
表示这一点)。