Eu provavelmente usaria uma das opções já fornecidas pelo @slhck, mas aqui estão mais algumas maneiras de fazer isso:
Usando matrizes, como faria em qualquer outro idioma:
$ foo=( $(SayStuff) )
$ echo ${foo[2]}
cucumbers
O var=()declara uma matriz, $(command)salva a saída do comando. Então, foo=( $(SayStuff) )armazena a saída de SayStuffdentro da matriz fooe você echoé o terceiro elemento ${foo[2]}.
sed
$ SayStuff | sed 's/.* \(.*\)/\1/'
cucumbers
O sedcomando substituirá ( s///) tudo pela última palavra. A regex corresponde a qualquer espaço ( .*) que corresponda a tudo até o último espaço e, em seguida, captura a última palavra (\(.*\). Como a palavra foi capturada, podemos nos referir a ela como \1.
Uma versão mais simples:
$ SayStuff | sed 's/.* //'
cucumbers
bater
$ foo=$(SayStuff); echo ${foo##* }
cucumbers
Isso usa as habilidades de manipulação de string do bash, veja aqui para mais detalhes.
Mais festança
$ SayStuff | while read a b c; do echo $c; done
cucumbers
Perl, onde é claro, existem muitas maneiras de fazer isso:
$ SayStuff | perl -lane 'print $F[$#F]'
cucumber
As -amarcas perlse comportam como awk, dividindo linhas no espaço em branco e salvando na matriz @F. Em seguida, imprimimos o último elemento de @F( $#Fé o número de elementos em @F). O comando -ldiz ao perl para adicionar uma nova linha a cada printinstrução, a de -nque ele deve processar STDIN linha por linha e de -eexecutar o script fornecido na linha de comando.
$ SayStuff | perl -pe 's/.* //'
cucumber
As opções foram explicadas acima, estamos apenas excluindo tudo até o último espaço e impressão ( -p).
$ perl -le 'print $ARGV[$#ARGV]' $(SayStuff)
cucumbers
Aqui estamos passando Watermelons and cucumberscomo argumentos, que perl salvará na @ARGmatriz e, portanto, imprimimos o último elemento de @ARG.
truques. Este usa sedpara converter espaços em novas linhas e, em seguida, tailimprimir apenas a última linha.
$ SayStuff | sed 's/ /\n/g' | tail -n 1
cucumbers
expressões regulares e grep, usando as -oquais imprime apenas a sequência correspondente.
$ SayStuff | grep -Po '\w+$'
cucumbers
traindo
$ SayStuff | grep -o cucumbers
cucumbers
cutnão manipulará um número variável de espaços, enquanto oawkfaz.