我有一个文本文件,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