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 SayStuff
mảng foo
và yuou sau echo
đó là phần tử thứ ba với ${foo[2]}
.
sed
$ SayStuff | sed 's/.* \(.*\)/\1/'
cucumbers
Các sed
lệ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ó -a
làm cho perl
hà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
( $#F
là số phần tử trong @F
). Thông báo -l
cho perl thêm một dòng mới vào mỗi print
câu lệnh, -n
rằng nó sẽ xử lý dòng STDIN theo dòng và -e
nó 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 cucumbers
làm đối số, mà perl sẽ lưu trong @ARG
mả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 đó tail
chỉ 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 -o
chỉ in chuỗi phù hợp.
$ SayStuff | grep -Po '\w+$'
cucumbers
gian lận
$ SayStuff | grep -o cucumbers
cucumbers
cut
sẽ không xử lý một số lượng không gian khác nhau, trong khiawk
làm.