Отримайте останню частину струни після дефісу


10

Чи є простий командний рядок для вилучення останньої частини рядка, розділеної дефісами? Наприклад, я хочу витягнути 123з foo-bar-123.

Відповіді:


23

Ви можете використовувати розширення параметра Bash :

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

Якщо ви хочете скористатися іншим процесом, за допомогою Awk:

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

Або, якщо ви віддаєте перевагу Sed:

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

Більш легкий зовнішній процес, так як передбачає Гленн Джекман є cut:

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

Розширення параметра оболонки - найкраща відповідь. cutcut -d- -f3 <<< "$string"
Легким

1
@glennjackman - ре: cut; насправді, але лише якщо число останнього поля відомо (оскільки питання дещо неоднозначне: чи є простий командний рядок для вилучення останньої частини ...? )
don_crissti

2
@don_crissti, справді. Можна було б зробити rev <<< "$string" | cut -d- -f1 | rev, але тоді ми відхиляємось від простоти param.expansion.
glenn jackman


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.