sed 注释几行

sed 注释几行

我有一个文本文件,test.txt内容如下:

foo
configure
top
start
fun
bar
hello

我想注释掉第 2、5 和 7 行,以便输出如下所示:

foo
#configure
top
start
#fun
bar
#hello

当我使用sed -i "2,7 {s/^/#/}" test.txt第 2、3、4、5、6 和 7 行时,会收到评论。如何确保只注释特定的行号?感谢任何帮助。

答案1

随着2,7您指定一个范围应用表达式的行数。在本例中,您只需选择三个特定行。

sed -e '2s/^/#/' -e '5s/^/#/' -e '7s/^/#/'  file

或者将实际的注释操作分离到sed编辑代码中的一个位置(只有当您需要做一些比在行#首添加 a 更复杂的事情时才真正有用):

sed -e 2bc -e 5bc -e 7bc -e b -e :c -e 's/^/#/' file

b命令分支到一个标签(此处c,用 定义:c),或者如果未给出标签,则分支到脚本末尾。

或与awk

awk 'NR == 2 || NR == 5 || NR == 7 { print "#" $0; next } 1'  file

相关内容