当替换命令写入文件时,Sed仅替换文件的偶数行

时间:2014-07-24 08:17:08

标签: regex bash unix sed

我在文件中有所有替换命令replace.sed,并且我将它与sed的-f标志一起使用 sed -f replace.sed InputFile。但是现在我遇到了一个条件,我只需要在给定输入文件的偶数行上应用这些替换规则(即仅在第2,4,6行等等)。我不能在{中放置任何条件语句{1}}文件也被其他脚本使用。

2 个答案:

答案 0 :(得分:5)

-f file就像一个include(它将将脚本文件的内容添加到要执行的命令),因此您可以将其内容放在一组命令中:

sed -e '2~2{' -f replace.sed  -e '}'

答案 1 :(得分:0)

您可以像这样使用awk

awk 'NR%2==0 {do some with lines here}' file

然后它会改变2,4,6 ......上的一些......

EKS

awk 'NR%2==0 {sub(/old/,"new"}1' file

这将在第2,4,6行将old替换为new,然后打印所有行(已更改且未更改)