Получить последнюю часть строки после дефиса


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"

Расширение параметров оболочки - лучший ответ. Легкий внешний инструмент cut:cut -d- -f3 <<< "$string"
Гленн Джекман

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

2
@don_crissti, действительно. Можно было бы сделать rev <<< "$string" | cut -d- -f1 | rev, но тогда мы отклоняемся от простоты расширения param.
Гленн Джекман


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.