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 SayStuff
ke dalam array foo
dan kamu kemudian echo
elemen ketiga ${foo[2]}
.
sed
$ SayStuff | sed 's/.* \(.*\)/\1/'
cucumbers
The sed
perintah 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 -a
merek perl
berperilaku seperti awk
, garis membelah di spasi dan menyimpan ke dalam array @F
. Kami kemudian mencetak elemen terakhir @F
( $#F
adalah jumlah elemen dalam @F
). The -l
memberitahu perl untuk menambahkan baris baru untuk setiap print
pernyataan, -n
bahwa ia harus memproses STDIN baris demi baris dan -e
bahwa 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 cucumbers
sebagai argumen, perl yang akan disimpan dalam @ARG
array dan jadi, kita mencetak elemen terakhir @ARG
.
tipu daya. Ini digunakan sed
untuk mengkonversi spasi menjadi baris baru dan kemudian tail
hanya mencetak baris terakhir.
$ SayStuff | sed 's/ /\n/g' | tail -n 1
cucumbers
grep dan ekspresi reguler, menggunakan -o
yang hanya mencetak string yang cocok.
$ SayStuff | grep -Po '\w+$'
cucumbers
curang
$ SayStuff | grep -o cucumbers
cucumbers
cut
tidak akan menangani jumlah spasi variabel, saatawk
dilakukan.