Quiero agregar hashes a todas las líneas en un archivo de texto normal. Estoy bien con el uso de terminal y GUI, solo necesito hacerlo.
text-processing
Oxwivi
fuente
fuente
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 file
para 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
.sed 's/^\(.*\)$/##\1/'
, pero esto es mucho mejor.Aquí hay una solución a este problema usando perl
fuente
-p
interruptor 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%2aMientras estamos en eso:
Utiliza el complemento de edición in situ (relativamente nuevo) para GNU awk 4.1.0+.
fuente
Aquí hay una
bash
manera:( En el
bash
shell , ejecutarread -r
sin otros argumentos funciona comoIFS= 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
perl
que se espera que sea más eficiente que un shell cuando se trata de procesamiento de texto.fuente
sed -i
no es estándar POSIX, por lo que si eres un purista querrás usared
:fuente
Aquí hay una
perl
manera más fácil que la presentada en otros lugares:Esto (ab) utiliza el hecho de que
perl -p
imprime la línea después de ejecutar el comando dado en-e
.fuente
Puede usar Vim en modo Ex:
%
seleccione todas las líneass
sustituirx
guardar y cerrarfuente
Se puede hacer con la función de mapeo de python y la redirección de stdin:
Guarde el resultado en un archivo nuevo y úselo en lugar del original
fuente