如何在sed中的特定行数下面附加文字?
更具体地说,如果我有“目标”文件,
$ cat Target
##########
# (1)
##########
echo $PWD
##########
# (2)
##########
##########
# (3)
##########
如何在'#(2)'块和'#(3)'块之间插入一行? 在其他世界中,我想通过使用sed。
创建这样的“目标”文件$ cat Goal
##########
# (1)
##########
echo $PWD
##########
# (2)
##########
echo "yay"
##########
# (3)
##########
我尝试了各种各样的方式并且google了很多,我找不到任何线索。 (为什么特殊模式'\ n'不起作用?)
请给我一个建议。
答案 0 :(得分:1)
sed '/# (2)/ {n;n;a\
echo "yay"
}' Target > Goal
答案 1 :(得分:1)
这可能对您有用:
sed '/^# (2)/,/# (3)/{H;//{x;s/.*#\n\n/&echo "yay"\n/p};d}' Target > Goal
##########
# (1)
##########
echo $PWD
##########
# (2)
##########
echo "yay"
##########
# (3)
##########