GNU/Linux >> Linux Esercitazione >  >> Linux

Restituisce una corrispondenza regolare in uno script Bash, invece di sostituirla

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

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

Il metodo utilizzato per inserire i risultati in un array dipende in qualche modo da come vengono recuperati i dati effettivi. Non ci sono abbastanza informazioni nella tua domanda per poterti guidare bene. Tuttavia, ecco un metodo:

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

Ecco un altro modo:

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

Puoi farlo esclusivamente in bash usando la doppia parentesi quadra [[ ]] operatore di test, che memorizza i risultati in un array chiamato BASH_REMATCH :

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

Linux
  1. Bash Echo La riga di comando eseguita sulla riga di comando stessa (non in uno script)?

  2. Eof inaspettato mentre cerchi la corrispondenza """ - Script di Bash?

  3. Qualsiasi modo per uscire dallo script bash, ma non uscire dal terminale

  4. Corrispondenza del modello di script Bash

  5. Esegui il comando bash sulla pipeline jenkins

Sostituzione di String in Bash

35 Esempi di script Bash

Come eseguire uno script Bash

La corrispondenza del modello non funziona nello script bash

Controlla se uno qualsiasi dei parametri di uno script bash corrisponde a una stringa

Qual è il modo migliore per verificare se un volume è montato in uno script Bash?