Saya mungkin akan menggunakan salah satu opsi yang sudah diberikan oleh @slhck tapi di sini ada beberapa cara untuk melakukan ini:
Menggunakan array, seperti yang Anda lakukan dalam bahasa lain:
$ foo=( $(SayStuff) )
$ echo ${foo[2]}
cucumbers
The var=()menyatakan sebuah array, $(command)menyimpan output dari perintah. Jadi, foo=( $(SayStuff) )simpan output SayStuffke dalam array foodan kamu kemudian echoelemen ketiga ${foo[2]}.
sed
$ SayStuff | sed 's/.* \(.*\)/\1/'
cucumbers
The sedperintah akan menggantikan ( s///) segala sesuatu dengan kata terakhir. Regex mencocokkan apa pun hingga spasi ( .*) yang akan mencocokkan semuanya hingga spasi terakhir dan kemudian menangkap kata terakhir (\(.*\). Karena kata telah ditangkap, kita dapat menyebutnya sebagai \1.
Versi yang lebih sederhana:
$ SayStuff | sed 's/.* //'
cucumbers
pesta
$ foo=$(SayStuff); echo ${foo##* }
cucumbers
Ini menggunakan kemampuan manipulasi string bash, lihat di sini untuk detail lebih lanjut.
Lebih banyak bash
$ SayStuff | while read a b c; do echo $c; done
cucumbers
Perl, di mana tentu saja, ada banyak cara untuk melakukan ini:
$ SayStuff | perl -lane 'print $F[$#F]'
cucumber
The -amerek perlberperilaku seperti awk, garis membelah di spasi dan menyimpan ke dalam array @F. Kami kemudian mencetak elemen terakhir @F( $#Fadalah jumlah elemen dalam @F). The -lmemberitahu perl untuk menambahkan baris baru untuk setiap printpernyataan, -nbahwa ia harus memproses STDIN baris demi baris dan -ebahwa ia harus menjalankan skrip yang diberikan pada baris perintah.
$ SayStuff | perl -pe 's/.* //'
cucumber
Opsi dijelaskan di atas, kami hanya menghapus semuanya sampai ruang terakhir dan pencetakan ( -p).
$ perl -le 'print $ARGV[$#ARGV]' $(SayStuff)
cucumbers
Di sini kita meneruskan Watermelons and cucumberssebagai argumen, perl yang akan disimpan dalam @ARGarray dan jadi, kita mencetak elemen terakhir @ARG.
tipu daya. Ini digunakan seduntuk mengkonversi spasi menjadi baris baru dan kemudian tailhanya mencetak baris terakhir.
$ SayStuff | sed 's/ /\n/g' | tail -n 1
cucumbers
grep dan ekspresi reguler, menggunakan -oyang hanya mencetak string yang cocok.
$ SayStuff | grep -Po '\w+$'
cucumbers
curang
$ SayStuff | grep -o cucumbers
cucumbers
cuttidak akan menangani jumlah spasi variabel, saatawkdilakukan.