2012-08-27 22 views
2

我可以使用sed從文件中抓取特定行。是否有一種簡單的方法可以將此行或段落插入到另一個文件中的特定行上?使用標準unix工具在文件中插入行

sed -n 1,10p >> foo將結果附加到foo,這將結果放在底部。是否有標準的unix工具插入特定的行?

回答

6

也許您在找sedr命令?

sed '123r file.txt' main.txt 

插入的file.txt內容在main.txt 123行,印刷一切標準輸出。

(如果你的sed-i選項,你可以把它直接修改main.txt;否則,也不會修改它的輸入文件。)

+0

如何將一個字符串,而不是file.txt添加到main.txt?謝謝 – Judking

+0

@Judking改爲發表新問題。但簡單地說,您正在尋找'i'和/或'a'命令。 – tripleee

3

如果你要替換文件n日線foo你可以用

cp foo foo.tmp 
head -n $((n-1)) foo.tmp > foo 
echo "newline" >> foo 
tail -n +$((n+1)) foo.tmp >> foo 

所以你拿第一n-1線與head -n NR做到這一點,追加新的行,然後追加其餘則來自行開始n+1tail -n +NR

+2

您可以替換'cmd> foo; cmd >> foo; cmd >> foo' with'(cmd; cmd; cmd)> foo' –

0

這可能會爲你工作(GNU SED):

sed '123s|.*|sed '\''1,10!d'\'' insert.txt|e' main.txt 
相關問題