Uzyskaj ostatnią część ciągu po łączniku


10

Czy istnieje prosta linia poleceń do wyodrębnienia ostatniej części ciągu oddzielonego łącznikami? Na przykład, chcę, aby wyodrębnić 123z foo-bar-123.

Odpowiedzi:


23

Możesz użyć rozszerzenia parametrów Basha :

string="foo-bar-123" && printf "%s\n" "${string##*-}"
123

Jeśli chcesz użyć innego procesu, z Awk:

echo "foo-bar-123" | awk -F- '{print $NF}'

Lub, jeśli wolisz Sed:

echo "foo-bar-123" | sed 's/.*-//'

Lżejszy proces zewnętrzny, jak sugeruje Glenn Jackman, to cut:

cut -d- -f3 <<< "$string"

rozszerzenie parametru powłoki jest najlepszą odpowiedzią. Lekkie narzędzie zewnętrzne to cut:cut -d- -f3 <<< "$string"
glenn jackman

1
@glennjackman - RE: cut; w rzeczy samej, ale tylko wtedy, gdy znany jest numer ostatniego pola (ponieważ pytanie jest nieco dwuznaczne: czy istnieje prosta linia poleceń do wyodrębnienia ostatniej części ...? )
don_crissti

2
@don_crissti, rzeczywiście. Można to zrobić rev <<< "$string" | cut -d- -f1 | rev, ale odwracamy się od prostoty rozszerzenia param.
glenn jackman


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.