7.- Uso del comando sed

sed significa “stream editor” o editor de entrada de datos, sed comúnmente es utilizado como un filtro. Lee cada linea de su entrada de datos y entonces realiza las acciones solicitadas. La sintaxis básica de un comando sed es:

En donde archivos es uno o mas archivos y programa es uno o mas comandos de la forma:

Comenzaremos con la expresion mas simple, desplegar lineas que coincidan con una expresion.
Para poder realizar unas simples pruebas crearemos un archivo simple, digamos una lista de precios de frutas (para variar):

Al pulsar las teclas [Ctrl+d], forzamos a terminar la entrada de datos y posteriormente se graba el contenido en el archivo “frutas” y acaba mostrando el símbolo de comandos.

Digamos que deseamos desplegar una lista de las frutas que cuestan menos de 1 euro. Para eso necesitaríamos utilizar el comando p de sed (p=print).

En donde la expresion sería:

Vamos a explicar un poco su comportamiento:

Ejecutamos el comando:

Vemos que las lineas que coinciden con nuestra expresion aparecen repetidas en el listado, este es el comportamiento normal del comando sed, despliega cada linea de su entrada estándar en la salida estándar. Para evitar este comportamiento podemos especificar el parámetro -n de la siguiente manera:

Vemos el resultado mejorado:

Eliminar líneas

Suponiendo que nos quedemos sin Manzanas y necesitamos borrarlos de la lista, para esto usaremos el comando d (delete) de sed, la sintaxis seria la siguiente:

Y necesitaríamos especificar en la expresion que buscara la palabra manzana…

… se puede dar el caso  también que esté en mayúscula, entonces añadimos al principio de la linea, lo siguiente:

Veamos un ejemplo práctico:

Observamos que nos muestra el contenido del archivo frutas menos el producto “Manzana“; pero eso no quiere decir que se haya borrado del archivo frutas:

Esta vez no tuvimos que especificar el parámetro -n, debido a que la opcion p (print) imprime toda su entrada de datos a la salida estándar, pero el comando d, simplemente elimina de la salida estándar los datos que coincidan con la expresion.

Para modificar el archivo podríamos:

Ejemplo

Podemos mostrar las líneas que nos interese, en el siguiente ejemplo, a partir de la línea 3, mostrará las dos siguientes:

Vemos en la imagen de arriba que muestra los resultados obtenidos repitiendo las líneas; con la opción -n especificamos a sed que no tiene que volver a mostrarlo todo:

Aquí nos saltamos los campos “Fruta” y “Precio“:

Podemos sustituir una cadena de caracteres por otra en las líneas seleccionadas.

Para reemplazar Uva por Naranja entonces usaremos:

  • Trata de practicar con estos ejemplos para usar el comando sed.