GNU/Linux >> Tutoriales Linux >  >> Linux

Devuelve una coincidencia de expresiones regulares en un script Bash, en lugar de reemplazarlo

echo "TestT100String" | sed 's/[^0-9]*\([0-9]\+\).*/\1/'

echo "TestT100String" | grep -o  '[0-9]\+'

El método que utiliza para poner los resultados en una matriz depende en cierta medida de cómo se recuperan los datos reales. No hay suficiente información en tu pregunta para poder guiarte bien. Sin embargo, aquí hay un método:

index=0
while read -r line
do
    array[index++]=$(echo "$line" | grep -o  '[0-9]\+')
done < filename

Aquí hay otra forma:

array=($(grep -o '[0-9]\+' filename))

Podrías hacer esto puramente en bash usando el corchete doble [[ ]] operador de prueba, que almacena los resultados en una matriz llamada BASH_REMATCH :

[[ "TestT100String" =~ ([0-9]+) ]] && echo "${BASH_REMATCH[1]}"

Linux
  1. Eof inesperado al buscar coincidencias `”‘ – ¿Script Bash?

  2. Leer línea por línea en bash script

  3. Simulando la pulsación de la tecla ENTER en el script bash

  4. Imprima la salida de la declaración cat en el bucle de script bash

  5. Bash Shell Script:busque una bandera y tome su valor

Sustitución de cadena en Bash

35 ejemplos de secuencias de comandos Bash

Cómo ejecutar un script Bash

Cualquier forma de salir del script bash, pero sin salir de la terminal

Coincidencia de patrón de secuencia de comandos Bash

¿Cuál es la mejor manera de verificar si un volumen está montado en un script Bash?