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