Я хочу разделить текстовые объемы с "|" как пространство и получить второе происшествие т.е.; значение - 'test2'
volumes=|test1|test2
echo $volumes | tr "|" "\n"
Вышеупомянутая команда разделяет на каждую строку.. Я могу циклично выполниться через него и получить значение, но хотеть самый эффективный путь.
Можно использовать оболочку, создал в замене параметра "${volumes##*|}"
, который удаляет самое долгое совпадение начальной строки к |
символ
$ volumes="|test1|test2"
$ echo "${volumes##*|}"
test2
, С другой стороны, существует cut
$ cut -d\| -f3 <<< "$volumes"
test2
или awk
$ awk -F\| '{print $NF}' <<< "$volumes"
test2
Steeldriver уже дал Вам самые легкие опции. Вот являются еще много:
awk
awk -F'|' '{print $3}' <<<"$volumes"
perl
perl -F"\|" -lane 'print $F[2]' <<<"$volumes"
sed
sed 's/.*|//' <<<$volumes
С Вашим tr
команда
$ volumes="|test1|test2"
$ tr "|" "\n" <<< $volumes | tail -n1
test2