如何在sed中的特定行数下面附加文本?

时间:2011-08-05 14:32:45

标签: sed

如何在sed中的特定行数下面附加文字?

更具体地说,如果我有“目标”文件,

$ cat Target
##########
# (1)
##########

echo $PWD


##########
# (2)
##########


##########
# (3)
##########

如何在'#(2)'块和'#(3)'块之间插入一行? 在其他世界中,我想通过使用sed。

创建这样的“目标”文件
$ cat Goal
##########
# (1)
##########

echo $PWD


##########
# (2)
##########

echo "yay"

##########
# (3)
##########

我尝试了各种各样的方式并且google了很多,我找不到任何线索。 (为什么特殊模式'\ n'不起作用?)

请给我一个建议。

2 个答案:

答案 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)
##########