使用 sed 在文件中的第 n 行模式后插入字符串

问题描述 投票:0回答:3

我想使用 sed 在模式后的第 n 行之后插入单词。 我绑定了修改此命令,但它仅插入到模式之后的第一行。

sed -i '/myPattern/a \ LineIWantToinser ' myFile

我应该使用什么命令来插入,例如在模式之后的第三行?

linux sed insert match line
3个回答
1
投票

使用 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

0
投票

带有

bash
ed
的版本:

ed -s myFile <<<$'/myPattern/+3a\n LineIWantToinser \n.\nwq'

ed
使我们能够使用行寻址
/myPattern/+3


0
投票
sed '/pattern/{N;N;N;i \
Line to add after 3 lines with patterne as starting counter
}' YourFile
  • 在图案和插入线之间添加线的
    N
    的数量。
  • 这 3 行中没有检查文件结尾或模式。 (PO 中未指定)
© www.soinside.com 2019 - 2024. All rights reserved.