我需要编辑大量文件,方法是在唯一模式正下方或其上方插入(2)行。请告诉如何使用sed,awk,perl或shell中的任何其他内容。谢谢
some text
Hello My love, you're dirty girl
more text
我想在“你好我的爱,你是个肮脏的女孩”之后插入'我知道,我是,我的性感骑士',所以输出文件看起来像
some text
Hello My love, you're dirty girl
I know, I am, my sexy knight
more text
答案 0 :(得分:141)
在模式后追加:( -i用于替换)。 line1和line2是您要追加(或前置)的行
sed -i '/pattern/a \
line1 \
line2' inputfile
<强>输出:强>
#cat inputfile
pattern
line1 line2
在前面添加行:
sed -i '/pattern/i \
line1 \
line2' inputfile
<强>输出:强>
#cat inputfile
line1 line2
pattern
答案 1 :(得分:33)
以下内容在SearchPattern
之后添加一行。
sed -i '/SearchPattern/aNew Text' SomeFile.txt
它在包含New Text
的每一行下方插入SearchPattern
一行。
要添加两行,您可以使用\
并在输入New Text
时输入换行符。
POSIX sed在\
sed函数后需要a
和换行符。 [1]
指定要在没有换行符的情况下追加的文本是GNU sed扩展(如sed
信息页中所述),因此其用法不便于使用。
[1] https://unix.stackexchange.com/questions/52131/sed-on-osx-insert-at-a-certain-line/
答案 2 :(得分:3)
在你的诗节中给出一节之后插入一节新诗:
sed -i '/^Hello My love, you're dirty girl$/ s:$:\nI know, I am, my sexy knight:' FILE
答案 3 :(得分:1)
使用ed更加便携;有些系统不支持\ n in sed
printf "/^Hello My love, you're dirty girl/a\nI know, I am, my sexy knight\n.\nw\nq\n" |\
/bin/ed $filename