Respuestas:
Puedes usar sedpara hacer eso:
sed -i.bak 's/^/##/' file
Esto reemplaza el inicio de la línea ( ^) con ##.
Con el -i.bakinterruptor, sededita el archivo en su lugar, pero crea una copia de seguridad con extensión .bak.
sed 's/^\(.*\)$/##\1/', pero esto es mucho mejor.
Aquí hay una solución a este problema usando perl
perl -e 'while (<>) {print "##$_"}' < infile > outfile
-pinterruptor también es útil: perl -pe 's/^/##/' infile > outfile. (También existe el -i[extension]interruptor para reemplazar el archivo de destino en el lugar.) Perldoc.perl.org/perlrun.html#%2a-p%2a
Mientras estamos en eso:
gawk -i inplace '{print "##"$0}' infile
Utiliza el complemento de edición in situ (relativamente nuevo) para GNU awk 4.1.0+.
Aquí hay una bashmanera:
while read -r; do printf '##%s\n' "$REPLY"; done < infile > outfile
( En el bashshell , ejecutar read -rsin otros argumentos funciona como IFS= read -r REPLY).
Esto está inspirado estilísticamente en la solución perl de beav_35 , que admito que probablemente se ejecuta mucho más rápido para archivos de gran tamaño, ya perlque se espera que sea más eficiente que un shell cuando se trata de procesamiento de texto.
Puede usar Vim en modo Ex:
ex -sc '%s/^/##/|x' file
% seleccione todas las líneas
s sustituir
x guardar y cerrar
Se puede hacer con la función de mapeo de python y la redirección de 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
Guarde el resultado en un archivo nuevo y úselo en lugar del original
sed 's/^/##/' -i file. En este caso, esto sería preferible ya que no puede salir mal. En otros casos, este comando se puede combinardiff -u file.bak filepara ver las diferencias (si es necesario, canalizarloless). Si se confirma que funciona, la copia de seguridad se puede eliminar. De lo contrario, podría restaurarse con un simplemv file.bak file.