V
e
r

l
i
s
t
a
d
o

tractatus@lapipaplena:/# _

 

sed

Permite borrar líneas, registros o sustituir cadenas de caracteres dentro de las líneas.

Archivo base para ejemplo (Empleado -- Precio/hora -- Horas trabajadas – Cómo las cobra):

$ cat lista
Juan Gomez 6 10 banco
Clara Fuentes 7 12 banco
Antonio Cano 6 13 metálico
José Bueno 7 0 banco
Matías Crespo 5 8 metálico
Isabel Ruiz 7 0 metálico
María Monzón 9 16 metálico

Mostrar la linea 4 del fichero:

$ sed -n 4p lista

Mostrar la 4ª y la 5ª:

$ sed -n 4,5p lista

Mostrar de la 3ª al final del fichero:

$ sed -n '4,$p' lista

Mostrar desde la primera linea que empiece por “Ant” hasta el final:

$ sed -n '/^\Ant/,$p' lista

Mostrar sólo los parrafos desde “Clara” hasta “Bueno”:

$ sed -n '/Clara/,/Bueno/p' lista

Mostrar cada linea a doble espacio:

$ sed G lista

Mostrar las lineas que cumplen el patrón “Ju” en alguno de sus campos:

$ sed -n '/Ju/p' lista

Borrar la 4ª linea del fichero:

$ sed '4d' lista

Borrar la última linea del fichero:

$ sed -e \$d lista

Lo mismo:

$ sed '$d' lista

Borrar las lineas que empiecen por "J":

$ sed -e '/J/d' lista

Borrar la segunda linea

$ sed '2d' lista

Borrar la 1ª y la 2ª:

$ sed '1,2d' lista

Borrar a partir del primer espacio en blanco:

$ sed -e 's/ .*//' lista

Borrar desde la primera linea que empiece por "Ant" hasta el final:

$ sed -e '/^\Ant/,$d' lista

Borrar desde la 2 linea hasta la que tenga "Ruiz":

$ sed '2,/Ruiz/d' lista

Borrar las lineas en blanco de un archivo (en "lista" no procede):

$ sed '/^$/d lista

Cambiar "metálico" por "gratis" excepto en la 3 linea:

$ sed '3!s/metálico/gratis/' lista

Cambiar "met" por "tem" en las lineas que no tengan "Cano":

$ sed '/Cano/!s/met/tem/' lista

Cambiar campos (banco por cheque):

$ sed 's/banco/cheque/' lista

Cambiar las "J" y la "C" mayúsculas por minúsculas:

$ sed 'y/J-C/j-c/' lista

Substituye las vocales por "u":

$ sed -e "s/[aeio]/u/g" lista

Substituir los espacios por tabulaciones:

$ sed -e 's/ /\t/g' lista

Alinear al centro:

$ sed -e :a -e 's/^.\{1,77\}$/ &/;ta' -e 's/\( *\)\1/\1/' lista

Todas las opciones pueden usarse como tubería substituyendo "lista" por “cat lista |”:

$ cat lista | sed -n '4,$p'

Otros ejemplos:

Mostrar lineas no comentadas de un archivo:

$ sed -e '/^#/d' /etc/fstab

Substituir "foto" por "FOTO" en todo los archivos del directorio:

$ ls * | sed -e 'p;s/foto/FOTO/' | xargs -n2 mv

Cambiar “Juan” por “Pedro” en todos los archivos .txt del presente directorio:

$ sed -i 's/Juan/Pedro/g' *.txt

Mostrar sólo las lineas con 4 dígitos seguidos:

$ sed '/[0-9]\{4\}/p' archivo

Borrar todos los espacios delante de cada linea:

$ sed 's/^[ ^t]*//' archivo
$ echo " Linux es genial" | sed 's/^ *//'

Borrar todos los espacios detras de cada linea:

$ sed 's/[ ^t]*$//' archivo
$ echo "Linux es genial " | sed 's/* $//'

Borrar los últimos 6 caracteres de una linea:

$ echo "Linux es genial" | sed 's/......$//'

Eliminar el primer caracter de cada linea de un archivo:

$ cat file.txt | sed 's/^.//'

Borrar los primeros 5 caracteres de una linea:

$ echo "Linux es genial" | sed 's/^.....//'

Eliminar los dos últimos caracteres de cada linea de un archivo:

$ cat file.txt | sed 's/..$//'

Eliminar los tres primeros y tres últimos caracteres de cada linea de un archivo:

$ cat file.txt | sed 's/...$//;s/^...//'

Borrar todos los espacios delante y detras de cada linea:

$ sed 's/^[ ^t]*//;s/[ ^]*$//' archivo

Cambiar los números 3333 por 3.333. El parámetro -r sirva para activar las expresiones regulares extendidas de sed:

$ sed -r "s/\<(reg|exp)[a-z]+/\U&/g"

Contar lineas de un archivo [emulador de wc -l]:

sed -n '$=' lista

Insertar 5 espacios en blanco delante de cada linea:

$ sed 's/^/ /' lista

Insertar 1 linea en blanco despues de la primera linea:

$ sed '2i\ \' lista

Insertar 1 linea en blanco despues de la primera linea y de la tercera:

$ sed '2i\ \' | sed '4i\ \' lista

Insertar texto entre una linea y otra. Por ejemplo en la linea 5:

$ sed "5i ---\n categories:tractatus\n date: 2015-05-22\n title: res\n ---\n" archivo.txt

Insertar texto al pricipio de la 2ª linea:

$ sed -i "2 s|^|texto al principio|" archivo

Insertar texto al principio de todas las lineas:

$ sed -i "s|^|texto al principio|g" archivo

Insertar texto al final de la linea 5:

$ sed -i "5 s|$|texto al final|" archivo

Insertar texto al final de todas las lineas:

$ sed -i "s|$|texto al final|g" archivo

Mostrar el número de línea que contiene una ocurrencia

$ sed -n '/Texto/=' archivo

Utilizar variables dentro de sed:

$ sed -i "/${VARIABLE}/d" archivo
$ sed -n "/^${NUM_BAIXA}/p" archivo (Que esté al principio de la linea)

Numerar lineas (cat -n archivo)

$ sed = fichero.txt | sed 'N;s/\n/\t/'

Reemplazar una cadena ("esto" por "aquello") en muchos archivos:

$ find . -type f -exec sed -i -e 's/esto/aquello/g' {} \;

Lo mismo pero sólo en archivos txt:

$ find . -type f -exec -name '*.txt' sed -i -e 's/esto/aquello/g' {} \;

Eliminar todas las lineas que coincidan la palabra "casa":

$ find . -type f -exec sed -i -e '/casa/d' {} \;

Lo mismo pero sólo en archivos.txt:

$ find . -type f -exec -name '*.txt' sed -i -e '/pattern/d' {} \;

Reemplazar "esto" por "aquello" de forma real en archivo.txt

$ sed -i "s|esto|aquello|' archivo.txt
Navegando por staredsi.eu aceptas las cookies que utilizamos en esta web. Más información: Ver política de cookies
[0] 0:bash*
1837 entradas - Acerca del Tractatus
La Pipa Plena 2018