Probablemente usaría una de las opciones que ya ofrece @slhck, pero aquí hay algunas formas más de hacerlo:
Usando matrices, como lo haría en cualquier otro idioma:
$ foo=( $(SayStuff) )
$ echo ${foo[2]}
cucumbers
El var=()declara una matriz, $(command)guarda la salida del comando. Por lo tanto, foo=( $(SayStuff) )almacena la salida de SayStuffen la matriz fooy luego echoes su tercer elemento con ${foo[2]}.
sed
$ SayStuff | sed 's/.* \(.*\)/\1/'
cucumbers
El sedcomando sustituirá ( s///) todo con la última palabra. La expresión regular coincide con cualquier cosa hasta un espacio ( .*) que coincidirá con todo hasta el último espacio y luego captura la última palabra (\(.*\). Como la palabra ha sido capturada, podemos referirnos a ella como \1.
Una versión más simple:
$ SayStuff | sed 's/.* //'
cucumbers
golpetazo
$ foo=$(SayStuff); echo ${foo##* }
cucumbers
Esto usa las habilidades de manipulación de cadenas de bash, vea aquí para más detalles.
Más bash
$ SayStuff | while read a b c; do echo $c; done
cucumbers
Perl, donde, por supuesto, hay muchas maneras de hacer esto:
$ SayStuff | perl -lane 'print $F[$#F]'
cucumber
Las -amarcas se perlcomportan como awk, dividiendo líneas en espacios en blanco y guardando en la matriz @F. Luego imprimimos el último elemento de @F( $#Fes el número de elementos en @F). El -lle dice a Perl que agregue una nueva línea a cada printinstrucción, -nque debe procesar STDIN línea por línea y -eque debe ejecutar el script dado en la línea de comando.
$ SayStuff | perl -pe 's/.* //'
cucumber
Las opciones se explicaron anteriormente, simplemente estamos eliminando todo hasta el último espacio e imprimiendo ( -p).
$ perl -le 'print $ARGV[$#ARGV]' $(SayStuff)
cucumbers
Aquí estamos pasando Watermelons and cucumberscomo argumentos, que Perl guardará en la @ARGmatriz y, por lo tanto, imprimimos el último elemento de @ARG.
astucia. Este se usa sedpara convertir espacios en nuevas líneas y luego tailpara imprimir solo la última línea.
$ SayStuff | sed 's/ /\n/g' | tail -n 1
cucumbers
grep y expresiones regulares, con las -ocuales imprime solo la cadena coincidente.
$ SayStuff | grep -Po '\w+$'
cucumbers
engañando
$ SayStuff | grep -o cucumbers
cucumbers
cutno manejará un número variable de espacios, mientras que loawkhará.