Tôi có thể sẽ sử dụng một trong các tùy chọn đã được cung cấp bởi @slhck nhưng đây là một vài cách khác để làm điều này:
Sử dụng mảng, như bạn làm trong bất kỳ ngôn ngữ nào khác:
$ foo=( $(SayStuff) )
$ echo ${foo[2]}
cucumbers
Các var=()tuyên bố một mảng, $(command)lưu đầu ra của lệnh. Vì vậy, foo=( $(SayStuff) )lưu trữ đầu ra của SayStuffmảng foovà yuou sau echođó là phần tử thứ ba với ${foo[2]}.
sed
$ SayStuff | sed 's/.* \(.*\)/\1/'
cucumbers
Các sedlệnh sẽ thay thế ( s///) tất cả mọi thứ với từ cuối cùng. Regex khớp với bất cứ thứ gì lên tới một khoảng trắng ( .*) sẽ khớp mọi thứ cho đến khoảng trống cuối cùng và sau đó ghi lại từ cuối cùng (\(.*\). Vì từ này đã bị bắt, chúng ta có thể gọi nó là \1.
Một phiên bản đơn giản hơn:
$ SayStuff | sed 's/.* //'
cucumbers
bash
$ foo=$(SayStuff); echo ${foo##* }
cucumbers
Điều này sử dụng khả năng thao tác chuỗi của bash, xem tại đây để biết thêm chi tiết.
Bash nhiều hơn
$ SayStuff | while read a b c; do echo $c; done
cucumbers
Perl, nơi tất nhiên, có nhiều cách để làm điều này:
$ SayStuff | perl -lane 'print $F[$#F]'
cucumber
Nó -alàm cho perlhành vi như awk, chia dòng ở khoảng trắng và lưu vào mảng @F. Sau đó chúng tôi in phần tử cuối cùng của @F( $#Flà số phần tử trong @F). Thông báo -lcho perl thêm một dòng mới vào mỗi printcâu lệnh, -nrằng nó sẽ xử lý dòng STDIN theo dòng và -enó sẽ chạy tập lệnh được đưa ra ở dòng lệnh.
$ SayStuff | perl -pe 's/.* //'
cucumber
Các tùy chọn đã được giải thích ở trên, chúng tôi chỉ xóa mọi thứ cho đến không gian cuối cùng và in ( -p).
$ perl -le 'print $ARGV[$#ARGV]' $(SayStuff)
cucumbers
Ở đây chúng ta chuyển qua Watermelons and cucumberslàm đối số, mà perl sẽ lưu trong @ARGmảng và do đó, chúng ta in phần tử cuối cùng của @ARG.
mánh khóe. Cái này sử dụng sedđể chuyển đổi khoảng trắng thành dòng mới và sau đó tailchỉ in dòng cuối cùng.
$ SayStuff | sed 's/ /\n/g' | tail -n 1
cucumbers
grep và biểu thức chính quy, sử dụng -ochỉ in chuỗi phù hợp.
$ SayStuff | grep -Po '\w+$'
cucumbers
gian lận
$ SayStuff | grep -o cucumbers
cucumbers
cutsẽ không xử lý một số lượng không gian khác nhau, trong khiawklàm.