Curiosidades De Hackers
EXPRESIONES REGULARESLINUX

EXPRESIONES REGULARES(SED)


Uso de semillas

Sintaxis

$ sed [options] command [input-file]

Con tubería

$ cat report.txt | sed 's/Nick/John/g'
$ echo '123abc' | sed 's/[0-9]+//g'

Ejemplos de opciones

Opción Ejemplo Descripción
-i sed -ibak ‘s/On/Off/’ php.ini Copia de seguridad y modificación del archivo de entrada directamente
-E sed -E ‘s/[0-9]+//g’ input-file Usa expresiones regulares extendidas
-n sed -n ‘3 p’ config.conf Suprimir la impresión de espacio de patrón predeterminado
-f sed -f script.sed config.conf Ejecutar archivo de script sed
-e sed -e ‘command1’ -e ‘command2’ input-file Ejecute múltiples comandos sed

Múltiples comandos

$ echo "hello world" | sed -e 's/h/H/g' -e 's/w/W/g'

Usar -e para ejecutar múltiples comandos sed

Guión sed

$ echo 's/h/H/g' >> hello.sed
$ echo 's/w/W/g' >> hello.sed
$ echo "hello world" | sed -f hello.sed

Usar -f para ejecutar el archivo de script sed

Ejemplos

$ sed 's/old/new/g' file.txt
$ sed 's/old/new/g' file.txt > new.txt
$ sed 's/old/new/g' -i file.txt
$ sed 's/old/new/g' -i.backup file.txt

Comandos sed

Comandos

Comando Ejemplo Descripción
p sed -n ‘1,4 p’ input.txt Líneas de impresión 1-4
p sed -n -e ‘1,4 p’ -e ‘6,7 p’ input.txt Imprima las líneas 1-4 y 6-7.
d sed ‘1,4 d’ input.txt Líneas de impresión excepto 1-4
w sed -n ‘1,4 w output.txt’ input.txt Escribir espacio de patrón en el archivo
a sed ‘2 a new-line’ input.txt Agregar línea después
i sed ‘2 i new-line’ input.txt Insertar línea antes

Comandos especiales

Comando Descripción
n Imprima el espacio del patrón, vacíe el espacio del patrón y lea la siguiente línea
x Intercambiar espacio de patrón con espacio de retención
h Copie el espacio del patrón para mantener el espacio
H Agregar espacio de patrón para mantener el espacio
g Copiar espacio de retención al espacio del patrón
G Agregar espacio de retención al espacio de patrón

Banderas

$ sed 's/old/new/[flags]' [input-file]
Bandera Descripción
g Sustitución global
1,2... Sustituya la enésima ocurrencia
p Imprima solo la línea sustituida
w Escriba solo la línea sustituida en un archivo
I Ignora el caso mientras buscas
e Sustituir y ejecutar en la línea de comando

Comandos de bucle

Comando Descripción
b label Sucursal a una etiqueta (para bucle)
t label Sucursal a una etiqueta solo en sustitución exitosa (para bucle)
:label Etiqueta para los comandos byt (para bucle)
N Agregar siguiente línea al espacio del patrón
P Imprima la primera línea en varias líneas
D Eliminar la primera línea en varias líneas

Banderas de misceláneos

Bandera Descripción
/|^@!#
& Obtiene el patrón combinado
( ) \1 \2 \3 Grupo usando ( y ). Usar \1, \2 en reemplazo para referir al grupo

Ejemplos de semillas

Sustitución de texto

$ sed 's/old/new/g' file.txt
$ sed 's/old/new/g' file.txt > new.txt
$ sed 's/old/new/g' -i file.txt
$ sed 's/old/new/g' -i.backup file.txt

Buscar texto

$ sed -n '/hello/p' file.txt
$ sed -n '/hello/Ip' file.txt
$ sed -n '/hello/!p' file.txt

Líneas de aplicación

$ sed '2a Text after line 2' file.txt
$ sed '$a THE END!' file.txt
$ sed '3~3a Some text' file.txt

Numeración

$ sed = file.txt | sed 'N;s/\n/\t/'
$ sed = file.txt | sed 'N; s/^/   /; s/ *\(.\{6,\}\)\n/\1  /'
$ sed '/./=' file.txt | sed '/./N; s/\n/ /'
$ sed -n '$='

Preparando líneas

$ sed '5i line number five' file.txt
$ sed '/hello/i Example: ' file.txt

Eliminar líneas

$ sed '5,7d' file.txt
$ sed '3~2d' file.txt
$ sed '$d' file.txt
$ sed '/^Hello/d' file.txt
$ sed '/^$/d' file.txt
$ sed '/^#/d' file.txt

Espaciado de archivos

$ sed G
$ sed '/^$/d;G'
$ sed 'G;G'
$ sed 'n;d'
$ sed '/regex/{x;p;x;}'
$ sed '/regex/G'
$ sed '/regex/{x;p;x;G;}'