Perlsearch和replace

如何使用search和replace来更改文件的内容。

我需要能够改变“全部为无”和/或“全无”,而不必每次都手动去做数百行。

下面是一个带有行号的示例文本文件。 我知道如何打开和closures已经写入的文件。

1 define_filter absolute_minimal_filter ——-全部
2 define_filter atma_basic_filter ——– —–无
3 define_filter atma_communication_filter – 全部
4 define_filter atma_health_filter ————-无
5 define_filter atma_misc_filter —————全部
6 define_filter atma_performance_filter —- none
7 define_filter atma_supplemental_filter —- none

用精心挑选的string代替“临时”(在两个地方):

sed 's/all/temp/g;s/none/all/g; s/temp/none/g' input_file > output_file 

或没有临时string,如果“全部”和“无”永远不会出现在同一行,并总是结束行:

 sed 's/all$/none/;t;s/none$/all/' input_file > output_file 

出于兴趣,Perl解决scheme与sed非常相似:

 perl -pi.bak -e 's/all$/none/ || s/none$/all/' input_file 

编辑:我错过了“||” 第一次。 作为单独的陈述,第二个将撤消第一个。 D'哦!