GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Geben Sie eine Regex-Übereinstimmung in einem Bash-Skript zurück, anstatt sie zu ersetzen

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

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

Die Methode, mit der Sie die Ergebnisse in ein Array einfügen, hängt etwas davon ab, wie die tatsächlichen Daten abgerufen werden. Ihre Frage enthält nicht genügend Informationen, um Sie gut führen zu können. Hier ist jedoch eine Methode:

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

Hier ist ein anderer Weg:

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

Sie könnten dies rein in der Bash mit der doppelten eckigen Klammer [[ ]] tun Testoperator, der Ergebnisse in einem Array namens BASH_REMATCH speichert :

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

Linux
  1. Jede Möglichkeit, das Bash-Skript zu beenden, aber das Terminal nicht zu verlassen

  2. Variablenbereich für Bash-Shell-Skripte und Funktionen im Skript

  3. Bash-Skript-Musterabgleich

  4. Bash-Skript, um zu prüfen, ob eine öffentliche HTTPS-Site aktiv ist

  5. Was ist der beste Weg, um zu überprüfen, ob ein Volume in einem Bash-Skript gemountet ist?

Ersetzen von Zeichenfolgen in Bash

35 Bash-Skriptbeispiele

So führen Sie ein Bash-Skript aus

Führen Sie den Bash-Befehl auf der Jenkins-Pipeline aus

Der Musterabgleich funktioniert nicht im Bash-Skript

Überprüfen Sie, ob einer der Parameter eines Bash-Skripts mit einer Zeichenfolge übereinstimmt