正则表达式搜索并用两个条件替换
问题描述:
我想在文件中执行搜索和替换。正则表达式搜索并用两个条件替换
搜索将针对其扩展名为.xml的文件名(文本文件内)进行搜索。 通过.xml扩展名查找位置,并立即更改文本。
即,找到 “emission_mazda_3_c1_zjz6_16_ _ho2s_front.xml” 文字这一行和替换文本 “emission_mazda_3_c1_zjz6_16_ _ho2s_front.xml”。
任何帮助将不胜感激,谢谢 汤米
答
稍微取决于你所使用的正则表达式,所以我给了几个例子。
使用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/
或者与SED,也使用BRE,到输出到文件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
表示这个)。
他们会一直采用这种格式吗?什么是最通用的方式来表达这些文件名(虽然仍然一致)? – 2011-03-02 15:43:24