it-swarm.com.de

Extrahieren des zweiten Wortes aus einer Zeichenfolgenvariablen

Ich habe eine Zeichenfolge "rtcpOnNbActive true" in einer Variablen gespeichert x. Ich möchte "true" als Teilzeichenfolge extrahieren und in einer Variablen speichern. Wie kann ich das machen?

11
Pratibha Jain

Versuchen Sie Folgendes:

y=$(echo $x | awk '{print $2}')
echo $y
  • echo $x zeigt den Wert von x an.
  • awk '{print $2}' druckt das zweite Feld des zuvor angezeigten x.
  • $(...) halte die Ausgabe und lass sie y zuweisen.
21
jherran

Angenommen, vor dem zu extrahierenden Teilstring befindet sich mindestens ein Leerzeichen (und der Teilstring enthält keine Leerzeichen), können Sie dies mit einer einfachen Parametererweiterung tun:

x="rtcpOnNbActive     true"
y="${x##* }"
echo "[$y]"

Ausgabe

[true]
9
PM 2Ring

sie können awk verwenden:

echo "rtcpOnNbActive         true" | awk '{print $NF}'
true

NF Anzahl der Felder im aktuellen Datensatz

mit sed:

echo "rtcpOnNbActive         true" | sed 's/.* //g'
true

verwenden des Zeichenfolgenausdrucks:

 a="rtcpOnNbActive         true"
 echo ${a##* }
 true

mit grep:

 echo "rtcpOnNbActive         true" | grep -Eo "[a-z]+$"
 true

-o gibt nur eine genaue Übereinstimmung an, [a-z]+ stimmt mit dem Buchstaben von a-z überein und $ bedeutet am Ende

4
Hackaholic

Es ist möglich, dafür Bash-Arrays zu verwenden, z.

arr="(first second third)"
echo ${arr[1]}
3
kenorb

Sie können das integrierte read verwenden

read -r _ y <<<"$x"
printf "%s\n" "$y"
true
2
iruvar