Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.
Introducción a sed
Correo electrónico: darkshram en gmail punto com Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org
Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
© 1999-2014 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector, hace mal uso de éstos.
Introducción.
Acerca de sed.
Sed es un editor de emisiones (stream editor) utilizado para el procesamiento de texto en archivos. Utiliza un lenguaje de programación para realizar transformaciones en una emisión de datos leyendo línea por línea de estos. Fue desarrollado entre 1973 y 1974 por Lee E. McMahon de Bell Labs. Está incluido en las instalaciones básicas de prácticamente todas las distribuciones de GNU/Linux.
Procedimientos.
A continuación se mostrarán ejemplos del uso de sed.
Utilice vi para crear el archivo usuario.txt:
vi usuario.txt |
Ingrese lo siguiente:
Fulano Algo |
Guarde el archivo y salga de vi.
Ejecute cat con el nombre de este archivo como argumento para visualizar el contenido del archivo usuario.txt:
cat usuario.txt |
Ejecute lo siguiente para convertir a doble espacio la salida del archivo usuario.txt:
sed G usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo |
Ejecute lo siguiente para guardar esta salida en el archivo usuario2.txt:
sed G usuario.txt > usuario2.txt |
Ejecute lo siguiente para convertir a doble espacio la salida del archivo usuario.txt:
sed 'G;G' usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo |
Ejecute lo siguiente para guardar esta salida en el archivo usuario2.txt:
sed 'G;G' usuario.txt > usuario3.txt |
Lo anterior mostrará que el contenido de usuario3.txt con triple espacio de separación.
Ejecute lo siguiente para convertir un archivo a doble espacio, pero sin que exista más de una línea vacía entre cada línea con datos:
sed '/^$/d;G' usuario3.txt |
La salida devolverá lo siguiente:
Fulano Algo |
Ejecute lo siguiente para eliminar el doble espacio del archivo usuario2.txt:
sed 'n;d' usuario2.txt |
La salida devolverá lo siguiente:
Fulano Algo |
Ejecute lo siguiente para agregar una línea en blanco arriba de toda línea que contenga la expresión regular enga:
sed '/enga/{x;p;x;}' usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo |
Ejecute lo siguiente para agregar una línea en blanco debajo de toda línea que contenga la expresión regular 3:
sed '/3/G' usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo |
Ejecute lo siguiente para agregar una línea en blanco arriba y debajo de toda línea que contenga la expresión regular 3:
sed '/3/{x;p;x;G;}' usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo |
Para reemplazar texto se utiliza el modelo 's/texto/nuevo-texto/' donde texto puede ser también una expresión regular. En el siguiente ejemplo se reemplazarán las incidencias del número por el número 9:
sed 's/3/9/g' usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo |
En el siguiente ejemplo se reemplazan los espacios por tabuladores a todo lo largo de todas las líneas:
sed 's/\ /\t/g' usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo Calle Mengana 123 Colonia Perengana Ciudad de Zutano, C.P. 123456 |
En el siguiente ejemplo se reemplazará sólo el primer espacio de cada línea por un tabulador:
sed 's/\ /\t/' usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo Calle Mengana 123 Colonia Perengana Ciudad de Zutano, C.P. 123456 |
Ejecute lo siguiente para añadir 5 espacios al inicio de cada línea:
sed 's/^/ /' usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo Calle Mengana 123 Colonia Perengana Ciudad de Zutano, C.P. 123456 |
Ejecute lo siguiente para mstrar en pantalla sólo la primera línea del archivo usuario.txt:
sed q usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo |
Ejecute lo siguiente para mostrar en pantalla sólo las primeras dos líneas del archivo usuario.txt:
sed 2q usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo Calle Mengana 123 |
Ejecute lo siguiente para mostrar en pantalla sólo las últimas tres líneas del archivo usuario.txt:
sed -e :a -e '$q;N;4,$D;ba' usuario.txt |
La salida devolverá lo siguiente:
Calle Mengana 123 Colonia Perengana Ciudad de Zutano, C.P. 123456 |
Ejecute lo siguiente para mostrar sólo las líneas que incluyen 3:
sed '/3/!d' usuario.txt |
La salida devolverá lo siguiente:
Calle Mengana 123 Ciudad de Zutano, C.P. 123456 |
Ejecute lo siguiente para mostrar sólo las líneas sin 3:
sed '/3/d' usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo Colonia Perengana |
Ejecute lo siguiente para mostrar la línea que está inmediatamente después de la expresión Fulano, pero excluyendo la línea que incluye Fulano:
sed -n '/Fulano/{n;p;}' usuario.txt |
La salida devolverá lo siguiente:
Calle Mengana 123 |
Ejecute lo siguiente para mostrar la línea que está inmediatamente antes de la expresión Calle, pero excluyendo la línea que incluye Calle:
sed -n '/Calle/{g;1!p;};h' usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo |
Bibliografía.
- Eric Pement: http://student.northpark.edu/pemente/sed/sed1line.txt
- Wikipedia: http://en.wikipedia.org/wiki/Sed