Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
© 1999-2008 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.
Sed es un editor de emisiones (stream editor) utilizado para el procesamiento de texto en ficheros. 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.
Utilice vi para crear el fichero usuario.txt:
vi usuario.txt |
Ingrese el siguiente contenido y salga de vi:
Fulano Algo |
Si utiliza el mandato cat sobre el fichero, visualizará tal cual el contenido de usuario.txt como fue ingresado en vi.
cat usuario.txt |
Si se quiere convertir a doble espacio la salida del fichero usuario.txt, utilice el siguiente mandato:
sed G usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo |
Para guardar esta salida en el fichero usuario2.txt, utilice lo siguiente:
sed G usuario.txt > usuario2.txt |
Si se quiere convertir a doble espacio la salida del fichero usuario.txt, utilice el siguiente mandato:
sed 'G;G' usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo |
Para guardar esta salida en el fichero usuario2.txt, utilice lo siguiente:
sed 'G;G' usuario.txt > usuario3.txt |
El contenido de usuario3.txt tendrá triple espacio de separación. Si se desea convertir un fichero a doble espacio, pero que no haya más de una línea vacía entre cada lñíena con datos, se utiliza lo siguiente:
sed '/^$/d;G' usuario3.txt |
La salida devolverá lo siguiente:
Fulano Algo |
Si se desea eliminar el doble espacio del fichero usuario2.txt, se utiliza lo siguiente:
sed 'n;d' usuario2.txt |
La salida devolverá lo siguiente:
Fulano Algo |
Si se quiere agregar una línea en blanco arriba de toda línea que contenga la expresión regular enga, se utiliza lo siguiente:
sed '/enga/{x;p;x;}' usuario.txt
|
La salida devolverá lo siguiente:
Fulano Algo |
Si se quiere agregar una línea en blanco debajo de toda línea que contenga la expresión regular 3, se utiliza lo siguiente:
sed '/3/G' usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo |
Si se quiere agregar una línea en blanco arriba y debajo de toda línea que contenga la expresión regular 3, se utiliza lo siguiente:
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 reemplazan solo 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 |
La siguiente línea añade 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 |
El siguiente mandato solo imprime la primera línea del fichero usuario.txt:
sed q usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo |
El siguiente mandato solo imprime las primeras dos líneas del fichero usuario.txt:
sed 2q usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo Calle Mengana 123 |
El siguiente mandato solo muestra las últimas tres líneas del fichero 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 |
El siguiente mandato solo mostrará 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 |
El siguiente mandato solo mostrará las líneas que no incluyen 3:
sed '/3/d' usuario.txt |
La salida devolverá lo siguiente:
Fulano Algo Colonia Perengana |
El siguiente mandato pide mostrar la linea que está inmediatamente después de la expresión Fulano, pero no la línea en si que incluye Fulano:
sed -n '/Fulano/{n;p;}' usuario.txt
|
La salida devolverá lo siguiente:
Calle Mengana 123 |
El siguiente mandato pide mostrar la linea que está inmediatamente antes de la expresión Calle, pero no la línea en si que incluye Calle:
sed -n '/Calle/{g;1!p;};h' usuario.txt
|
La salida devolverá lo siguiente:
Fulano Algo |
Alcance Libre
http://www.alcancelibre.org/staticpages/index.php/introduccion-sed