Risposte:
Puoi usare sed
per farlo:
sed -i.bak 's/^/##/' file
Questo sostituisce l'inizio della riga ( ^
) con ##
.
Con l' -i.bak
opzione, sed
modifica il file sul posto, ma crea una copia di backup con estensione .bak
.
sed 's/^\(.*\)$/##\1/'
, ma è molto più bello.
Mentre ci siamo:
gawk -i inplace '{print "##"$0}' infile
Questo utilizza il plug-in di modifica sul posto (relativamente nuovo) per GNU awk 4.1.0+.
Ecco un bash
modo:
while read -r; do printf '##%s\n' "$REPLY"; done < infile > outfile
( Nella bash
shell , l'esecuzione read -r
senza altri argomenti funziona come IFS= read -r REPLY
.)
Questo è ispirato stilisticamente dalla soluzione perl di beav_35 , che ammetto probabilmente funziona molto più velocemente per file di grandi dimensioni, dal momento che ci si perl
può aspettare che sia più efficiente di una shell quando si tratta di elaborazione del testo.
Puoi usare Vim in modalità Ex:
ex -sc '%s/^/##/|x' file
%
seleziona tutte le righe
s
sostituire
x
salva e chiudi
Può essere fatto con la funzione di mappatura di Python e reindirizzare lo stdin:
$ cat input.txt
lorem ipsum
quick brown fox
hello world
$ python -c 'import sys;print "".join(map(lambda x: "##"+x,sys.stdin.readlines()))' < input.txt
##lorem ipsum
##quick brown fox
##hello world
Salva l'output in un nuovo file e usalo al posto dell'originale
sed 's/^/##/' -i file
. In questo caso, questo sarebbe preferibile poiché non può andare storto. In altri casi, questo comando può essere combinato condiff -u file.bak file
per vedere le differenze (se necessario, passalo attraversoless
). Se si conferma che funzioni, il backup può essere rimosso. Altrimenti potrebbe essere ripristinato con un semplicemv file.bak file
.