In Bash möchte ich das N-te Wort eines Strings erhalten, der von einer Variablen gehalten wird.
Zum Beispiel:
STRING="one two three four"
N=3
Ergebnis:
"three"
Welcher Bash-Befehl / welches Bash-Skript könnte dies tun?
echo $STRING | cut -d " " -f $N
Eine Alternative
N=3 STRING="one two three four" arr=($STRING) echo ${arr[N-1]}
quelle
IFS
(das interne Feldtrennzeichen) auf ':' oder etwas anstelle von Leerzeichen gesetzt haben, ändern Sie es zurück, bevor Sie dies versuchen.Verwenden von
awk
echo $STRING | awk -v N=$N '{print $N}'
Prüfung
% N=3 % STRING="one two three four" % echo $STRING | awk -v N=$N '{print $N}' three
quelle
Eine Datei mit einigen Anweisungen:
Ergebnis:
So drucken Sie das 4. Wort dieses Anweisungstyps:
cat test.txt |awk '{print $4}'
Ausgabe :
quelle
Keine teuren Gabeln, keine Rohre, keine Bashismen:
$ set -- $STRING $ eval echo \${$N} three
Aber hüte dich vor Globbing.
quelle
STRING=(one two three four) echo "${STRING[n]}"
quelle