使用sed替换特定的行号

时间:2016-10-28 17:12:31

标签: sed

我在下面使用替换行号29 to 32上的文字:

sed -i '29,32 s/^ *#//' file

如何进一步添加行号,即行35 to 38,行43&上面命令中的45行?

2 个答案:

答案 0 :(得分:2)

使用GNU sed。 m在这里是一个标签。

sed -i '29,32bm;35,38bm;43bm;45bm;b;:m;s/^ *#//' file

来自man sed

  

b label:分支标签;如果省略label,则跳转到脚本结尾。

     

: label:b和t命令的标签。

答案 1 :(得分:0)

这可能适合你(GNU sed):

cat <<\! | sed 's:$:s/^ *#//:' | sed -f - -i file
29,32
35,38
43,45
!

使用您想要的行范围创建一个here-document,并将它们传递给sed脚本,该脚本创建另一个针对所需文件运行的sed脚本。

here-document可以替换为文件:

sed 's:$:s/^ *#//:' lineRangeFile | sed -f - -i file