Editar archivos de texto desde la línea de comandos en Linux
Cuando de trata de automatizar, u optimizar, algunas operaciones sobre archivos de textos, tal como adicionar, modificar o eliminar, solemos acudir a los comandos para facilitar esta labor, en lugar de hacerlo a lo tradicional, como en procesador de textos. Entonces miremos cómo editar archivos de texto desde la linea de comandos en Linux.
El comando más «filudo» para este propósito es el comando sed. Con sed podemos realizar todas las operaciones de edición de texto desde la línea de comandos, de manera tan precisa, que podemos incluirlo en procesos de automatización con programación tipo scripting en Bash.
Editar archivos de texto desde la línea de Comandos con Sed
Leer la línea 39000 del archivo
sed -n 39000p archivo.txt
Eliminar la primera línea de todos los archivos PHP
sed -i '1d' *.php
La opción -i actualiza el archivo con los cambios. Sin esta opción solo mostrará los cambios en pantalla.
Insertar la cadena ‘Titulo’ en la primera línea de todos los archivos txt (esto sobreescribe esa línea)
sed -i '1i Titulo' *.txt
Insertar la cadena ‘Titulo’ en la primera línea de todos los archivos txt (sin sobreescribir esa línea)
sed -i '1i\Titulo' *.txt
Quitar espacios en blanco
sed ‘/^$/d’ input.txt > output.txt
Tenemos la siguiente lista de líneas en un archivo de texto:
Tabla Destino 0.0.0.0 169.254.0.0 192.168.0.0 192.168.0.1 192.168.0.2 192.168.0.9 192.168.0.148 192.168.0.192 Tabla Destino 0.0.0.0 169.254.0.0 192.168.0.0 192.168.0.1 192.168.0.2 192.168.0.9 192.168.0.148
Con el siguiente comando borramos todo lo que comience desde la línea Tabla hasta la línea 0.0.0.0:
sed -i '/Tabla/,/0.0.0.0/d' archivo.txt
De esa misma lista de líneas, necesitamos borrar las que dice 192.168.0.9 (no deja líneas en blanco):
sed -i '/'192.168.0.9'/d' prueba.txt
Borrar líneas de texto que tenga la frase ‘esto ya no sirve’ (esto deja la linea en blanco)
sed -i 's/esto ya no sirve//g' archivo.txt
En el comando anterior, también podemos poner en lugar del texto, una variable que almacene cualquier texto que le pasemos.
sed -i '/'$variable'/d' archivo.txt
Borrar líneas en blanco
sed -i '/^$/d' prueba.txt
Reemplazar cadenas de texto
sed -i 's/viejo texto/nuevo texto/g' archivo.txt
El detalle con el anterior comando es que si el ‘viejo texto’ está pegado a otro, nos reemplazara hasta el texto pegado. Usemolo de esta manera para que solo cambie el ‘viejo texto’:
sed -i 's/viejo texto /nuevo texto/g' archivo.txt
Colocar texto al final del archivo
sed -i -e '$a\nuevo texto' prueba.txt
Potenciar el comando Sed con el comando Find
Buscar archivos PHP y eliminarles la primera linea
find ./* -name "*.php" -print | xargs sed -i '1d'
Valora este artículo:


Pingback: 🥇 Principales Comandos de Linux - Comprimir Ficheros Directorios