Есть ли простая командная строка для извлечения последней части строки, разделенной дефисами? Например, я хочу извлечь 123
из foo-bar-123
.
10
Вы можете использовать расширение параметров 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"
cut
; действительно, но только если известен номер последнего поля (поскольку вопрос немного двусмысленный: есть ли простая командная строка для извлечения последней части ...? )rev <<< "$string" | cut -d- -f1 | rev
, но тогда мы отклоняемся от простоты расширения param.источник
источник