GNU/Linux >> Tutoriales Linux >  >> Linux

Bash =~ Regex y Https://regex101.com/?

Usando https://regex101.com/ construí una expresión regular para devolver la primera aparición de una dirección IP en una cadena.

expresión regular:

(?:d{1,3}.)+(?:d{1,3})

RegExp incluidos los delimitadores:

/(?:d{1,3}.)+(?:d{1,3})/

Con la siguiente cadena de prueba:

eu-west                       140.243.64.99 

Devuelve una coincidencia completa de:

140.243.64.99

No importa lo que intente con anclas, etc., el siguiente script bash no funcionará con la expresión regular generada.

temp="eu-west                       140.243.64.99            "
regexp="(?:d{1,3}.)+(?:d{1,3})"
if [[ $temp =~ $regexp ]]; then
  echo "found a match"
else
  echo "No IP address returned"
fi

Respuesta aceptada:

d es una forma no estándar de decir "cualquier dígito". Creo que proviene de Perl, y muchos otros lenguajes y utilidades también admiten RE compatibles con Perl (PCRE). (y, por ejemplo, GNU grep 2.27 en Debian stretch admite el w similar para caracteres de palabras incluso en modo normal.)

Bash no es compatible con d , sin embargo, por lo que debe usar explícitamente [0-9] o [[:digit:]] . Lo mismo para el grupo que no captura (?:..) , use solo (..) en su lugar.

Esto debería imprimir match :

temp="eu-west                       140.243.64.99            "
regexp="([0-9]{1,3}.)+([0-9]{1,3})"
[[ $temp =~ $regexp ]] && echo match

Linux
  1. Instalar binarios en /bin, /sbin, /usr/bin y /usr/sbin, interacciones con --prefix y DESTDIR

  2. ¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

  3. ¿Por qué poner otras cosas que no sean /home en una partición separada?

  4. Diferencia entre /bin y /usr/bin

  5. hacer eco o imprimir /dev/stdin /dev/stdout /dev/stderr

¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

Linux:¿Diferencia entre /dev/console, /dev/tty y /dev/tty0?

Debian – ¿Mover /var, /home a una partición separada?

¿Por qué /bin/sh apunta a /bin/dash y no a /bin/bash?

Comprender los archivos /proc/mounts, /etc/mtab y /proc/partitions

¿Deberían vivir los sitios web en /var/ o /usr/ según el uso recomendado?