2015-06-17 31 views
0

我想要在使用sed的模式之後的第n行之後插入字。 我綁定修改這個命令,但它只在模式後的第一行插入。在使用sed的模式之後在第n行中的文件中插入字符串

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

我應該用什麼命令在模式後插入第三行?

+1

你想要那條線後的第N條線?或者第N行之後的那條線與那個模式?或者在第N行之後的第N行使用該模式?無論你想要'sed'的情況可能都不是最好的工具。 'awk'可能會更容易一些(儘管你應該可以很輕鬆地用'sed'做一些)。 –

回答

0
sed '/pattern/{N;N;N;i \ 
Line to add after 3 lines with patterne as starting counter 
' YourFile 
  • 數目的N添加圖案和插入線之間線。
  • 在3行中沒有檢查文件或模式的結尾。 (在PO不指定)與GNU的sed做
1

最簡單方法是。(也許有些直接的解決方案存在!?)

sed -n '/pattern/=' file 

看行,其中圖案(grep的,也可以這裏所用的-n)

然後如果行號+ numoflines是例如123

sed '123aSOME INSERTED TEXT AFTER THAT LINE' file 

其中小一個是附加命令(該行後,如果i用於無線將是預先圖案線)

ps。我很想看看@neronlevelu(或其他sed愛好者)是否會找到一些更好的sed解決方案。

編輯:我發現它,它似乎是追加或我插入必須?在使用{with;裏面}像

sed '/pattern/{N;N;N; 
a SOME TEXT FOR INSERTING 
}' file 
0

一個版本bashed

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

ed使我們能夠使用線尋址/myPattern/+3

相關問題