2010-08-17 127 views

回答

10

如果你已經GNU sed中,你可以使用-i選項,它會做更換到位。

sed -i 's/$/<br>/' mytext.txt 

否則,您將不得不重定向到另一個文件並將其重命名爲舊的。

sed 's/$/<br>/' mytext.txt > mytext.txt.new && mv mytext.txt.new mytext.txt 
+0

哎呦 - 當然!感謝您的快速回復! – DrMHC 2010-08-17 02:20:12

0

使用重定向符號即

sed 's/$/<br>/' mytext.txt > mytext2.txt && mv mytext2.txt mytext.txt 
1

如果你有一個上最新sed,只需用sed -ised --in-place,這將修改實際的文件本身。

如果你想備份,你需要爲它提供一個後綴。因此sed -i.baksed --in-place=.bak將創建一個.bak後綴的備份文件。

使用此!認真!由於錯誤地輸入sed命令或錯誤地假設文件中的數據,您在第一次損壞文件時會非常感激。

+1

這實際上是一個新的啓示。我根本沒有意識到這一點。感謝您的洞察力paxdiablo! – DrMHC 2010-08-17 04:45:08

3

只是爲了完整。在Mac OS X(使用FreeBSD的SED),你必須使用一個額外的空串「」就地文件編輯,而不備份:

sed -i "" 's/$/<br>/' mytext.txt 

作爲替代使用的sed就地無備份文件編輯,你可以使用ed(1),然而,在操作它之前,它將整個文件讀入內存。

printf '%s\n' H 'g/$/s//<br>/g' ',p' | ed -s test.file # print to stdout 

printf '%s\n' H 'g/$/s//<br>/g' wq | ed -s test.file # in-place file edit 

欲瞭解更多有關ED(1)看:

「編輯文件與腳本編輯的文本編輯器」,

http://wiki.bash-hackers.org/doku.php?id=howto:edit-ed

相關問題