- 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