Skip to content
every-linux-geek-needs-to-know-sed-and-awk-heres-why

Linux – Comando Sed

Trucos de consola usando sed

Finales de linea tipo DOS (CR/LF) a formato Unix.

sed ‘s/.$//’ # asume que todas las lineas terminan con CR/LF sed ‘s/\x0D$//’ # funciona con ssed, gsed 3.02.80 o superior

Borrarado espacios en blanco al principio y el final de cada linea
sed 's/^[ \t]*//;s/[ \t]*$//'
Alineando el texto a una anchura de 79 columnas
sed -e :a -e 's/^.\{1,78\}$/ &/;ta'  # set at 78 plus 1 space
Substituciones «foo» por «bar» en cada linea
  • sustituir solo la primera ocurrencia en la linea
    • sed ‘s/foo/bar/’
  • sustituir solo la cuarta ocurrencia en la linea
    • sed ‘s/foo/bar/4’
  • sustituir todas las veces que se encuentre
    • sed ‘s/foo/bar/g’
  • sustituir solo la anteultima ocurrencia
    • sed ‘s/\(.*\)foo\(.*foo\)/\1bar\2/’
  • sustituir solo la ultima ocurrencia
    • sed ‘s/\(.*\)foo/\1bar/’
  • sustituir "foo" por "bar" SOLO en las lineas que contengan "baz"
    • sed ‘/baz/s/foo/bar/g’
  • sustituir "foo" por "bar" EXCEPTO en las lineas que contengan "baz"
    • sed '/baz/!s/foo/bar/g'
Mostrar la linea numero 52
sed -n '52p'                 # metodo 1
sed '52!d'                   # metodo 2

sed '52q;d' # metodo 3, eficiente para ficheros grander

Quitar la mayoria de los tags HTML (reconoce tags multilinea)
sed -e :a -e 's/<[^>]*>//g;/</N;//ba'

Emulación algunos comandos

Contar lineas (emula «wc -l»)
sed -n '$='
Ordenar lineas al reves (emula «tac»)
sed '1!G;h;$!d'               # metodo 1
sed -n '1!G;h;$p'             # metodo 2
Invierta cada caracter de la linea (emula «rev»)
sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
Une pares de lineas lado a lado (emula «paste»)
sed '$!N;s/\n/ /'
Muestra las 10 primeras lineas (emula «head»)
sed 10q
Muestra la 10 ultimas filas (emula «tail»)
sed -e :a -e '$q;N;11,$D;ba'
Muestra solo las lineas que se ajustan a la expresion regular (emula «grep»)
sed -n '/regexp/p'           # metodo 1
sed '/regexp/!d'             # metodo 2
Borra lineas duplicadas consecutivas (emula «uniq»)
sed '$!N; /^\(.*\)\n\1$/!P; D'

Referencias:

http://sed.sourceforge.net/sed1line.txt
http://sed.sourceforge.net/sedfaq.html
https://www.gnu.org/software/sed/manual/sed.html