2013-07-12 102 views
0

我正在尋找一種方法將一行插入到文件中的特定位置。將行插入到多個文件中的特定位置

有點像這個:using sed

但問題是,我想寫輸出到同一個文件,其中我得到的輸入,我需要一個以上的文件來做到這一點。

可悲的是,這並不工作:sed '3iline 3' input.txt > input.txt

這會工作:sed '3iline 3' input.txt > tmp.txt && cat tmp.txt > input.txt

,但我不發現和exec工作了......

我希望這樣的事情是可能的:

find /usr/local/share/ -iname 'xyz.htm' -exec sed '19i<p>TEXT</p>' {} > {} \; 

但它不能這樣工作,所以我最終寫了一個簡短的腳本工作。但它仍然困擾着我,因爲我一直認爲它應該可以做到簡短(也許是在線)和簡單。

我希望有人能指出我正確的方向。

回答

2

如果我理解正確,您需要-i選項。 這將做原始文件的變化。它不需要任何其他管道和重定向。

sed -i.bak '3iline 3' input.txt 

這將採用.bak擴展名的原始文件的備份。

man sed

-i[SUFFIX], --in-place[=SUFFIX] 
     edit files in place (makes backup if extension supplied) 
+0

感謝,這正是我一直在尋找! – cptPH

相關問題