Risposte:
Puoi usare sedper farlo:
sed -i.bak 's/^/##/' file
Questo sostituisce l'inizio della riga ( ^) con ##.
Con l' -i.bakopzione, sedmodifica 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 bashmodo:
while read -r; do printf '##%s\n' "$REPLY"; done < infile > outfile
( Nella bashshell , l'esecuzione read -rsenza 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 perlpuò 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 fileper 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.