我試圖使用SED插入文本文件中的第三行,而且我在其他論壇中發現的語法是:SED插入命令行的OSX
sed -i '' "3i\ text to insert" file
當我使用這個然而,我得到一個錯誤:
sed: 1: "3i\ text to insert": extra characters after \ at the end of i command
我似乎無法弄清楚是什麼導致了問題。我使用OSX,這就是爲什麼我有一個空的''作爲我的擴展。
謝謝!
我試圖使用SED插入文本文件中的第三行,而且我在其他論壇中發現的語法是:SED插入命令行的OSX
sed -i '' "3i\ text to insert" file
當我使用這個然而,我得到一個錯誤:
sed: 1: "3i\ text to insert": extra characters after \ at the end of i command
我似乎無法弄清楚是什麼導致了問題。我使用OSX,這就是爲什麼我有一個空的''作爲我的擴展。
謝謝!
您應該\
後直接放一個換行符:
sed '3i\
text to insert' file
這實際上是由POSIX specification定義的行爲。 GNU sed允許你指定要在同一行插入的文本是一個擴展。
在OSX你可以使用:
sed -i.bak '3i\
text to insert
' file
這裏是如何做到這一點的一個行語法
sed -i '' -e "2s/^//p; 2s/^.*/text to insert/" file
重複第二行:2s/^//p;
與您的文本替換新行:2s/^.*/text to insert/
該作品對我來說
sed -i '' '3i\
text to insert' file
如果您想要修改特定文件類型(在我的情況下是.sh)的文件,請使用此命令。
sed -i '.sh' '3i\
mymodified text to insert' temp.sh
請確保您有後斜槓(「\」),換行符
我想給一個額外+1指出的是,「在'3i'位之後插入的文本」是GNU擴展(但我只能給其中的一個)。 – 2014-09-02 20:48:52
@JonathanLeffler我會代你向他頒發其他+1 :-) – 2014-09-02 21:11:56