miércoles, 10 de julio de 2024

Expresiones Regulares en SED

Expresiones Regulares en sed

El comando sed o editor de secuencias se usa para sustitucion de texto.

texto bash shell

Ejemplos de `sed` y Expresiones Regulares

1. Reemplazo simple con referencia

Ejemplo 1:

echo "hello 123" | sed 's/\([0-9]\+\)/[\1]/'
# Salida: hello [123]

Reemplaza cualquier secuencia de dígitos con los mismos dígitos entre corchetes.

Ejemplo 2:

echo "foo bar baz" | sed 's/\(bar\)/[\1]/'
# Salida: foo [bar] baz

Reemplaza la palabra "bar" con "[bar]".

2. Uso de clases de caracteres

Ejemplo 1:

echo "hello" | sed 's/[aeiou]/X/g'
# Salida: hXllX

Reemplaza todas las vocales con "X".

Ejemplo 2:

echo "sed script" | sed 's/[sS]/Z/g'
# Salida: Zed Zcript

Reemplaza todas las ocurrencias de "s" o "S" con "Z".

3. Alternancia

Ejemplo 1:

echo "cat bat rat" | sed 's/cat\|bat/dog/g'
# Salida: dog dog rat

Reemplaza "cat" o "bat" con "dog".

Ejemplo 2:

echo "one two three" | sed 's/one\|three/four/g'
# Salida: four two four

Reemplaza "one" o "three" con "four".

4. Anclas de línea

Ejemplo 1:

echo -e "foo\nbar" | sed 's/^foo/baz/'
# Salida: baz
#         bar

Reemplaza "foo" solo al inicio de la línea con "baz".

Ejemplo 2:

echo -e "foo\nbar" | sed 's/bar$/baz/'
# Salida: foo
#         baz

Reemplaza "bar" solo al final de la línea con "baz".

5. Reemplazo con repetición

Ejemplo 1:

echo "aaaabbbb" | sed 's/a\+/A/'
# Salida: Abbbb

Reemplaza una o más "a" consecutivas con "A".

Ejemplo 2:

echo "123456" | sed 's/[0-9]\+/NUM/'
# Salida: NUM

Reemplaza una secuencia de uno o más dígitos con "NUM".

6. Agrupación y referencia posterior

Ejemplo 1:

echo "abc abc" | sed 's/\(abc\) \1/\1 XYZ/'
# Salida: abc XYZ

Reemplaza "abc abc" con "abc XYZ" usando referencia posterior.

Ejemplo 2:

echo "123-456" | sed 's/\([0-9]\{3\}\)-\([0-9]\{3\}\)/\1.\2/'
# Salida: 123.456

Reemplaza el guión en "123-456" por un punto.


Comando Mejorado para Diferentes Cantidades de Dígitos

echo "1.2.24" | sed 's/\([0-9]\{1,2\}\)\.?\([0-9]\{1,2\}\)\.?\([0-9]\{2,4\}\)/\1-\2-\3/'

Desglose de la expresión regular:

  • \([0-9]\{1,2\}\) captura uno o dos dígitos.
  • \.? coincide opcionalmente con un punto.
  • \([0-9]\{1,2\}\) captura uno o dos dígitos.
  • \.? coincide opcionalmente con un segundo punto.
  • \([0-9]\{2,4\}\) captura entre dos y cuatro dígitos.

La cadena de reemplazo \1-\2-\3 formatea la salida con guiones.

Ejemplos

Entrada completa

echo "12.34.5678" | sed 's/\([0-9]\{1,2\}\)\.?\([0-9]\{1,2\}\)\.?\([0-9]\{2,4\}\)/\1-\2-\3/'

Salida: 12-34-5678

Entrada con grupos incompletos

echo "1.2.24" | sed 's/\([0-9]\{1,2\}\)\.?\([0-9]\{1,2\}\)\.?\([0-9]\{2,4\}\)/\1-\2-\3/'

Salida: 1-2-24

Entrada con solo dos grupos

echo "5.678" | sed 's/\([0-9]\{1,2\}\)\.?\([0-9]\{1,2\}\)\.?\([0-9]\{2,4\}\)/\1-\2-\3/'

Salida: 5-67-8

Nota

Esta expresión regular puede no funcionar correctamente si no se proporcionan suficientes grupos para que coincidan con los patrones. Asegúrate de que los datos de entrada siempre contengan al menos dos grupos de uno o dos dígitos y un grupo de dos a cuatro dígitos.

[e1] https://vergaracarmona.es/comando-sed/

[e2] https://www.gnu.org/software/sed/manual/sed.html#sed-script-overview

[e3] https://techsolutionscenter.wordpress.com/2011/11/17/uso-basico-del-comando-sed-reemplazar-cadenas-en-archivos-con-sed/

[e4] https://www-gnu-org.translate.goog/software/sed/manual/sed.html?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

[e5] https://www-grymoire-com.translate.goog/Unix/Sed.html?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

[e6] https://edoras-sdsu-edu.translate.goog/doc/sed.html?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

jueves, 4 de julio de 2024

Nano - Atajos de teclado

Nano

Atajos de teclado del editor de texto Nano.

Lista de comandos básicos del Editor Nano

  • Ctrl + g: Nos muestra el menú de ayuda.
  • Ctrl + o: Nos guarda el documento.
  • Ctrl + u: Pega en la línea que nos encontramos lo que se ha copiado en el buffer.
  • Ctrl + l: Redibuja la pantalla actual.
  • Ctrl + j: Justificamos el párrafo actual.
  • Ctrl + m: Insertaremos un retorno de carro en la posición actual del cursor.
  • Ctrl + _: Vamos a un número de línea concreto.
  • Ctrl + r: Insertar otro fichero en el actual.
  • Ctrl + w: Buscar una cadena.
  • Ctrl + y: Nos lleva a la página anterior.
  • Ctrl + v: Nos lleva a la página siguiente.
  • Ctrl + t: Revisar la ortografía.
  • Ctrl + x: Salimos del editor.

Identificar las Líneas

Número de línea del cursor

$ nano -c tuarchivo.sh
Con este comando te sale una linea por encima de los atajos de teclas indicandote donde está situado el cursor.

Numerar todas las líneas

$ nano -l tuarchivo.sh
Con este comando te salen todas las linear numeradas a la izquierda.

Copiar, cortar y pegar.

Copiar

alt + 6
Con esta combinacion de teclas copiamos una línea completa.

Alt + a (inicio) y Alt + 6 (final)
Con esta combinación copiamos el texto seleccionado.

Cortar

Ctrl + k
Con esta combinación cortamos una linea de texto.

Ctrl + 6 (inicio) y Ctrl + k (final)
Con esta combinación cortamos un texto en concreto.

Pegar

Ctrl + u
Con esta combinación pegamos el texto seleccionado anteriormente.