2010-08-17 12 views

risposta

10

Se avete GNU sed, è possibile utilizzare l'opzione -i, che farà la sostituzione al suo posto.

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

In caso contrario sarà necessario reindirizzare a un altro file e rinominarlo su quello precedente.

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

whoops - ovviamente! Grazie per la risposta rapida! – DrMHC

0

utilizzare il simbolo di reindirizzamento cioè

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

Se si dispone di un up-to-date sed, basta usare sed -i o sed --in-place, che modificherà il file vero e proprio.

Se si desidera un backup, è necessario fornire un suffisso per questo. Pertanto, sed -i.bak o sed --in-place=.bak creerà un file di backup con il suffisso .bak.

Utilizzare questo! Sul serio! Lo apprezzerai molto la prima volta che danneggi il tuo file a causa di un comando errato sed o di un'errata ipotesi sui dati nel file.

+1

Questa è in realtà una nuova rivelazione. Non ne ero affatto consapevole. Grazie per la tua comprensione paxdiablo! – DrMHC

3

Solo per completezza. In Mac OS X (che utilizza FreeBSD sed) è necessario utilizzare un ulteriore null-string "" per l'editing di file sul posto, senza backup:

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

Come alternativa all'utilizzo di sed per no-di backup sul posto modifica di file, è possibile utilizzare ed (1), che, tuttavia, legge l'intero file in memoria prima di operare su di esso.

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 

Per ulteriori informazioni su Ed (1) Si veda:

"Modifica dei file con l'editor di testo ed da script",

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

Problemi correlati