我想改变这一点:
This is line1
This is line2
This is line3
到
This is line1
InsertedLine
This is line2
InsertedLine
InsertedLine
This is line3
InsertedLine
InsertedLine
InsertedLine
即在原文第一行后插入一次新行,第二行后插入两次,第三行后插入三次,以此类推。
答案1
以下是一种方法:
用您想要的来为保持空间做好准备
InsertedLine
;我不确定最好的方法是什么,但有一个选项是将第一行模式空间交换到保持缓冲区,用替换(现在为空的)模式空间InsertedLine
,然后交换回来:1{x;s/^/InsertedLine/;x}
现在继续将保持空间附加到模式空间,打印结果,然后剥离所有内容直到最后
InstertedLine
并将其附加回保持空间:G;p;s/.*\n//;H
InsertedLine
这样每次都会向保留空间添加新的内容。
因此
$ cat file
This is line1
This is line2
This is line3
然后
$ sed -n -e '1{x;s/^/InsertedLine/;x}' -e 'G;p;s/.*\n//;H' file
This is line1
InsertedLine
This is line2
InsertedLine
InsertedLine
This is line3
InsertedLine
InsertedLine
InsertedLine
当然,非 sed 选项可能更简单,例如。
awk '{for(i=0;i<FNR;i++) $0 = $0 ORS "InstertedLine"}1' file
或者
perl -pe 's/$/"\nInstertedLine" x $./e' file