Можливо, я б скористався одним із варіантів, які вже надав @slhck, але ось ще кілька способів зробити це:
Використання масивів, як і в будь-якій іншій мові:
$ foo=( $(SayStuff) )
$ echo ${foo[2]}
cucumbers
var=()Оголошує масив, $(command)зберігає висновок команди. Отже, foo=( $(SayStuff) )зберігає вихід SayStuffу масив fooі yuou, тоді echoце третій елемент з ${foo[2]}.
sed
$ SayStuff | sed 's/.* \(.*\)/\1/'
cucumbers
sedКоманда замінить ( s///) все з останнім словом. Режекс відповідає будь-якому простору ( .*), який буде відповідати всім до останнього пробілу, а потім фіксує останнє слово (\(.*\). Оскільки слово було захоплено, ми можемо позначати його як \1.
Більш проста версія:
$ SayStuff | sed 's/.* //'
cucumbers
баш
$ foo=$(SayStuff); echo ${foo##* }
cucumbers
Тут використовуються здібності керування струнними маніпуляціями Bash, див. Тут детальніше.
Більше баш
$ SayStuff | while read a b c; do echo $c; done
cucumbers
Perl, де, звичайно, є багато способів зробити це:
$ SayStuff | perl -lane 'print $F[$#F]'
cucumber
В -aмарці perlповодиться як awk, розщеплення лінії на пробільних і збереженні в масив @F. Потім друкуємо останній елемент @F(( $#Fкількість елементів у @F). -lКаже Perl , щоб додати нову рядок в кожному printзаяві, -nщо він повинен обробляти STDIN по рядках та -eщо він повинен запустити скрипт заданий в командному рядку.
$ SayStuff | perl -pe 's/.* //'
cucumber
Параметри були пояснені вище, ми просто видаляємо все до останнього місця та друкуємо ( -p).
$ perl -le 'print $ARGV[$#ARGV]' $(SayStuff)
cucumbers
Тут ми передаємо Watermelons and cucumbersяк аргументи, який perl збереже в @ARGмасиві і, таким чином, ми друкуємо останній елемент @ARG.
хитрість. Цей використовується sedдля перетворення пробілів у нові рядки, а потім tailдля друку лише останнього рядка.
$ SayStuff | sed 's/ /\n/g' | tail -n 1
cucumbers
grep та регулярні вирази, використовуючи -oякі, друкує лише відповідні рядки.
$ SayStuff | grep -Po '\w+$'
cucumbers
обман
$ SayStuff | grep -o cucumbers
cucumbers
cutцьому не буде оброблено змінну кількість пробілівawk.