Muhtemelen @slhck tarafından verilen seçeneklerden birini kullanacaktım ama işte bunu yapmanın birkaç yolu daha:
Dizileri, diğer dillerde yaptığınız gibi kullanma:
$ foo=( $(SayStuff) )
$ echo ${foo[2]}
cucumbers
var=()
Bir dizi beyan $(command)
komutunun çıktısını kaydeder. Böylece, foo=( $(SayStuff) )
çıkışını SayStuff
diziye foo
kaydeder ve sonra echo
üçüncü elementtir ${foo[2]}
.
sed
$ SayStuff | sed 's/.* \(.*\)/\1/'
cucumbers
sed
Komutu (ikame edecektir s///
geçen kelime ile) her şeyi. Normal .*
ifade, son boşluğa kadar her şeyi eşleştirecek ve ardından son kelimeyi yakalayacak bir boşlukla ( ) eşleşir (\(.*\)
. Kelime ele geçirildiği için, onu olarak ifade edebiliriz \1
.
Daha basit bir sürüm:
$ SayStuff | sed 's/.* //'
cucumbers
darbe
$ foo=$(SayStuff); echo ${foo##* }
cucumbers
Bu, bash'ın dize düzenleme yeteneklerini kullanır, daha fazla ayrıntı için buraya bakın.
Daha Fazla Bash
$ SayStuff | while read a b c; do echo $c; done
cucumbers
Perl, elbette, bunu yapmanın birçok yolu var:
$ SayStuff | perl -lane 'print $F[$#F]'
cucumber
-a
Markaları perl
gibi davranmaya awk
boşluktan bölme çizgileri ve diziye tasarruf @F
. Daha sonra öğesinin son öğesini yazdırırız @F
( $#F
içindeki öğelerin sayısıdır @F
). -l
Perl her bir yeni satır eklemek söyler print
, deyimi -n
bu çizgi ile STDIN hattını işlemek gerektiğini ve -e
bunun komut satırına verilen komut dosyasını çalıştırmak gerektiğini söyledi.
$ SayStuff | perl -pe 's/.* //'
cucumber
Seçenekler yukarıda açıklandı, sadece son boşluğa kadar her şeyi silip yazdırıyoruz ( -p
).
$ perl -le 'print $ARGV[$#ARGV]' $(SayStuff)
cucumbers
Burada Watermelons and cucumbers
perl @ARG
dizide kaydedilecek argümanlar olarak geçiyoruz ve böylece, son öğesini yazdırıyoruz @ARG
.
kandırmaca. Bu, sed
boşlukları yeni satırlara dönüştürmek ve sonra tail
yalnızca son satırı yazdırmak için kullanır .
$ SayStuff | sed 's/ /\n/g' | tail -n 1
cucumbers
grep ve normal ifadeleri kullanarak -o
yalnızca eşleşen dizeyi yazdırır.
$ SayStuff | grep -Po '\w+$'
cucumbers
hile
$ SayStuff | grep -o cucumbers
cucumbers
cut
ederken, boşluk değişken sayıda işlemez olurawk
yapmak.