Buscar aquí

12 junio 2012

Agregar/Quitar texto a cada línea de un archivo y/o reemplazar texto desde la consola

Un problema común para quienes les toca trabajar con archivos de texto, es que en alguna oportunidad, toca agregar o quitar texto de cada línea de un archivo, para qué? para realizar cargas masivas de datos por ejemplo... así, si queremos agregar por ejemplo una comilla al inicio de cada línea del archivo, se puede usar en vi estando en modo escape se escribe :%s/^/"/g    con esto, se agrega una comilla al comienzo de cada línea, para quitarla, es algo como: :%s/^"//g nótese que ahora el símbolo va acompañado con la comilla y al lado esta vacío.

Para el agregar o quitar al final de la línea?? se usa: :%s/$/"/g el símbolo $, representa el fin de línea, así se agrega la comilla al final de la línea.  Para quitarla igual que antes :%s/"$//g

Ahora para hacerlo desde afuera, se puede recurrir a sed y se utiliza casi la misma combinación de comandos.  En la consola para agregar escribiremos:

sed -e "s/^/"/g" nombrearchivo

El detalle acá es que el cambio lo mostrará en pantalla por defecto, entonces hay que redirigir la salida con un > nombre_archivo_destino, ie,

sed -e "s/^/"/g" nombrearchivo > nombre_archivo_destino

Debe notarse sí que la línea de arriba tiene un error, pues la comilla que aparece entre slash provoca un error, entonces es necesario "escapar" (significa agregar un back slash antes del caracter) la comilla, quedando así la línea:

sed -e "s/^/\"/g" nombrearchivo > nombre_archivo_destino

También, esto sirve si queremos incluir sed para tratar la salida de otro comando, por ejemplo, agregar algo a la salida del cat:

[root@localhost ~]# cat archivo
uno
dos
tres
[root@localhost ~]# cat archivo | sed "s/^/salto /g"
salto uno
salto dos
salto tres



3 comentarios:

  1. Anónimo9/30/2014

    Justo lo que estaba buscando.
    Excelente aporte

    ResponderEliminar
  2. Muchas, muchas gracias.
    Lo estaba buscando y me diste la información que buscaba.
    Me va a resultar muy útil.

    ResponderEliminar
  3. Anónimo9/04/2016

    Tengo un problema y no sé como solucionarlo
    les cuento..
    tengo 1500 archivos "txt", y y debo abrir el primer archivo y al principio escribir el mismo nombre del archivo

    por ejemplo mi archivo "400_1.txt"
    tiene lo siguiente:

    Gracias por venir a nuestra sucursal...

    lo que quiero es que el archivo "400_1.txt", se modifique y quede así:

    400_1 Gracias por venir a nuestra sucursal

    saludos !!!

    ResponderEliminar