我想使用 sed 在模式后的第 n 行之后插入单词。 我绑定了修改此命令,但它仅插入到模式之后的第一行。
sed -i '/myPattern/a \ LineIWantToinser ' myFile
我应该使用什么命令来插入,例如在模式之后的第三行?
使用 GNU sed 最简单的方法是..(也许存在一些直接的解决方案!?)
sed -n '/pattern/=' file
查看模式所在的行(grep 也可以在此处与 -n 一起使用)
那么如果 linenumber+ numoflines 是例如 123
sed '123aSOME INSERTED TEXT AFTER THAT LINE' file
其中小 a 是追加命令(在该行之后,如果使用 i 将是预模式行)
ps。我很想看看@neronlevelu(或其他 sed 爱好者)是否会找到更好的 sed 解决方案。
编辑:我找到了它,它似乎是用于附加或我用于插入必须?使用 { 和 ; 时位于行的第一个位置里面 } 就像
sed '/pattern/{N;N;N;
a SOME TEXT FOR INSERTING
}' file
带有
bash
和 ed
的版本:
ed -s myFile <<<$'/myPattern/+3a\n LineIWantToinser \n.\nwq'
ed
使我们能够使用行寻址 /myPattern/+3
。
sed '/pattern/{N;N;N;i \
Line to add after 3 lines with patterne as starting counter
}' YourFile
N
的数量。