2010-08-17 12 views

Odpowiedz

10

Jeśli GNU sed, można skorzystać z opcji -i, który zrobi wymianę na miejscu.

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

W przeciwnym razie będziesz musiał przekierować do innego pliku i zmienić jego nazwę na stary.

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

whoops - oczywiście! Dziękuję za szybką odpowiedź! – DrMHC

0

Użyj symbolu przekierowania tj

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

Jeśli masz up-to-date sed, wystarczy użyć sed -i lub sed --in-place, która modyfikowania samego pliku rzeczywistego.

Jeśli chcesz wykonać kopię zapasową, musisz podać jej przyrostek. Tak więc sed -i.bak lub sed --in-place=.bak utworzy plik kopii zapasowej z przyrostkiem .bak.

Użyj! Poważnie! Docenisz to za pierwszym razem, gdy uszkodzisz plik z powodu błędnie wpisanej komendy sed lub błędnego założenia dotyczącego danych w pliku.

+1

To w rzeczywistości nowe objawienie. W ogóle o tym nie wiedziałem. Dzięki za twoją wiedzę paxdiablo! – DrMHC

3

Tylko dla kompletności. W systemie Mac OS X (który używa FreeBSD sed) trzeba użyć dodatkowego pustego-string „” do edycji plików w miejscu bez kopii zapasowej:

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

Jako alternatywa do stosowania sed bez-kopii zapasowej w miejscu edytując plik, możesz użyć ed (1), które jednak odczytuje cały plik do pamięci przed uruchomieniem na nim.

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 

Aby uzyskać więcej informacji na temat ED (1), patrz:

"Edycja plików z ed edytora tekstu ze skryptów",

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

Powiązane problemy