我有这段文字:
bar
eor
mv foo bar
我想在mv上方插入2或3行,因为eor会在文件中重复,而我只需要添加一次即可。
我尝试过:
sed -i '/mv/2i \this' file
我尝试了一些awk变体,例如:
awk '/mv/ { print; print "new line"; previous }2'
这些工作都没有。在此先感谢您的帮助
答案 0 :(得分:2)
$ awk 'NR==FNR{if (/mv/) tgt=NR-2; next} FNR==tgt{print "new stuff"} 1' file file
bar
new stuff
eor
mv foo bar
答案 1 :(得分:0)
这可能对您有用(GNU sed):
sed -e ':a;N;s/\n/&/2;Ta;/\nmv[^\n]*$/i\new stuff' -e 'P;D' file
在文件的整个长度上打开一个由3行组成的运行窗口,当当前行的开头与mv
相匹配时,插入文本new stuff
,否则打印/删除窗口的第一行,然后重复。