Gibt es eine einfache Befehlszeile, um den letzten Teil einer durch Bindestriche getrennten Zeichenfolge zu extrahieren? Zum Beispiel möchte ich extrahieren 123
aus foo-bar-123
.
10
Sie können die Parametererweiterung von Bash verwenden :
string="foo-bar-123" && printf "%s\n" "${string##*-}"
123
Wenn Sie einen anderen Prozess verwenden möchten, können Sie mit Awk:
echo "foo-bar-123" | awk -F- '{print $NF}'
Oder wenn Sie Sed bevorzugen:
echo "foo-bar-123" | sed 's/.*-//'
Ein leichter externer Prozess, wie Glenn Jackman vorschlägt, ist cut
:
cut -d- -f3 <<< "$string"
cut
:cut -d- -f3 <<< "$string"
cut
; in der Tat, aber nur, wenn die Nummer des letzten Feldes bekannt ist (da die Frage etwas mehrdeutig ist: Gibt es eine einfache Befehlszeile, um den letzten Teil zu extrahieren ...? )rev <<< "$string" | cut -d- -f1 | rev
, aber dann weichen wir von der Einfachheit der param.expansion ab.quelle
quelle