Ejemplos practicos del comando SED en Linux

0
1578
  • Enumerar las líneas de un archivo de texto usando el comando SED. (equivalente al comando “cat -n archivo.txt”)Ejemplo:
    # sed = archivo.txt
  • Usando el comando anterior, existe un gran inconveniente y es que la numeración aparece en una línea aparte, y no al lado de la línea como se desea. Por tanto, para que aparezca al lado de la linea usaremos el comando “largo”:
    # sed = archivo.txt | sed ‘N;s/\n/\t/’
  • Ahora bien si se desea enumerar las líneas del archivo, pero en esta ocacion solo mostrar únicamente las líneas no vacías, entonces usamos el comando:Ejemplo:
    # sed ‘/./=’ fichero.txt | sed ‘/./N;s/\n/ /’
  • Mostrar un rango de lineas de un archivo de texto en la pantalla.
    Ejemplo:
    # sed -n ‘20,30p’ archivo.txt 
  • Si lo que deseamos es contar el numero de líneas (equivalente al comando “wc -l .txt | awk ‘{ print $1 }’ ” ), usaremos el comando:Ejemplo:
    # sed -n ‘$=’ archivo.txt
  • Tambien podemos definir el número de línea que contiene alguna ocurrencia o parametro, tal como se muestra en el siguiente ejemplo:# sed -n ‘/Inicio/=’ archivo.txt
  • Se sabe que el parámetro “=” solo acepta una dirección y, para definir los números de líneas entre 2 ocurrencias, se debera de utilizar la siguiente sintaxis:Ejemplo:
    # sed -n ‘/Inicio/,/Fin/{=;d;}’ archivo.txt

     

  • Eliminacion de una o varias líneas de un archivo:
    Sintaxis:
    sed ‘{[/]<n>|<cadena>|<regex>[/]}d’ <nombre_archivo>
    sed ‘{[/]<direccion1>[,<direccion2>][/]d’ <nombre_archivo> /…/ = delimitadores
    n = el número de línea
    cadena = la cadena contenida en la línea
    regex = expresión regular correspondiente a la ocurrencia buscada
    direccion = la dirección de una línea (número u ocurrencia)
    d = delete (borrar)

     

  • Ejemplos:
    Eliminación de la 3ra línea.
    # sed ‘3d’ archivo.txtEliminación de la línea conteniendo la cadena “prueba”.
    Ejemplo:
    # sed ‘/prueba/d’ archivo.txt
  • Eliminación de la última línea
    Ejemplo:
    # sed ‘$d’ archivo.txt
  • Eliminar todas las líneas vacías de un archivo
    Ejemplos:
    # sed ‘/^$/d’ archivo.txt
    # sed ‘/./!d’ archivo.txt
  • Eliminación de la línea conteniendo una expresión regular, (aquí se eliminara la línea que contiene caracteres numéricos (al menos 1 cifra) situados al final de la línea)
    Ejemplo:
    # sed ‘/[0-9/][0-9]*$/d’ archivo.txt
  • Eliminación de un intervalo de lineas entre 7 y 9.
    Ejemplo:
    # sed ‘7,9d’ archivo.txt
  • Lo mismo que el anterior, pero en esta ocacion, la “palabra” es reemplazada por una ocurrencia.
    Ejemplo:
    # sed ‘/-Inicio/,/-Fin/d’ archivo.txt

Observacion:
En los ejemplos anteriores únicamente se modifican en la visualización del archivo (ie. la salida estándar, 1 = la pantalla).

Sin embargo, para realizar modificaciones permanentes, por ejemplo en las antiguas versiones (<4) se debera de utilizar un archivo temporal, ie. usar el parámetro “-i[sufijo]” (–in-place[=sufijo]), tal como se ilustra en el siguiente ejemplo:

# sed -i”.bak” ‘3d’ archivo.txt

Aqui el comando no mostrará el resultado en la salida estándar, y éste modificará el archivo original “archivo.txt” eliminando la 3ra línea y por ende va a crear un archivo de respaldo llamado  “archivo.txt.bak“.

Más informacion en: linuxhowtos.org