如何复制一行然后注释第一次出现的行

如何复制一行然后注释第一次出现的行

我想复制一行并对其中一个事件进行评论。这更像是在对复制的行(未注释的行)进行更改之前保留一份副本。

输入文件 :

Hi , can you help me here?

输出文件:

#Hi , can you help me here?
Hi , can you help me here?

答案1

sed对于文件的每一行,使用:

sed 'h;s/^/#/p;g' < input-file > output-file

awk与:相同

awk '{print "#" $0 ORS $0}' < input-file > output-file

或者与paste

paste -d '#\n' /dev/null input-file input-file > output-file

如果input-file包含:

foo
bar

这将导致:

#foo
foo
#bar
bar

如果你更想看

#foo
#bar
foo
bar

那么你可以这样做:

paste -d'#' /dev/null input-file | cat - input-file > output-file

答案2

对于所有行执行以下操作:

$ sed -e 'h;G;s/^/#/' file


$ perl -pe '$_ = "#$_$_"' file 

限制特定行:

$ sed -e 'h;s/^\$AB/#&/p;g' file

$ perl -pe 's/^(\$AB.*)/#$1$1/s' file 

相关内容