$ echo "Watermelons and cucumbers" | cut -d ' ' -f 3
cucumbers
-d ' ' memberi tahu cut untuk membagi ruang. -f 3 memilih kolom ketiga.
Anda juga dapat menggunakan awk , yang sudah melakukan pemisahan berdasarkan ruang dan membuat kolom tersedia sebagai $1 , $2 , …
$ echo "Watermelons and cucumbers" | awk '{ print $3 }'
cucumbers
Saya mungkin akan menggunakan salah satu opsi yang sudah diberikan oleh @slhck tetapi berikut adalah beberapa cara untuk melakukannya:
-
Menggunakan array, seperti yang Anda lakukan dalam bahasa lain:
$ foo=( $(SayStuff) ) $ echo ${foo[2]} cucumbersvar=()mendeklarasikan array,$(command)menyimpan output dari perintah. Jadi,foo=( $(SayStuff) )menyimpan output dariSayStuffke dalam larikfoodan kamu laluechoitu elemen ketiga dengan${foo[2]}. -
sed$ SayStuff | sed 's/.* \(.*\)/\1/' cucumberssedperintah akan menggantikan (s///) semuanya dengan kata terakhir. Regex cocok dengan apa pun hingga spasi (.*) yang akan mencocokkan semuanya hingga spasi terakhir dan kemudian menangkap kata terakhir(\(.*\). Karena kata tersebut telah ditangkap, kita dapat menyebutnya sebagai\1.Versi yang lebih sederhana:
$ SayStuff | sed 's/.* //' cucumbers -
pesta
$ foo=$(SayStuff); echo ${foo##* } cucumbersIni menggunakan kemampuan manipulasi string bash, lihat di sini untuk detail lebih lanjut.
-
Lebih bash
$ SayStuff | while read a b c; do echo $c; done cucumbers -
Perl, di mana tentu saja, ada banyak cara untuk melakukannya:
$ SayStuff | perl -lane 'print $F[$#F]' cucumber-amembuatperlberperilaku sepertiawk, memisahkan baris pada spasi putih dan menyimpan ke dalam larik@F. Kami kemudian mencetak elemen terakhir dari@F($#Fadalah jumlah elemen dalam@F).-lmemberi tahu perl untuk menambahkan baris baru ke setiapprintpernyataan,-nbahwa itu harus memproses STDIN baris demi baris dan-ebahwa itu harus menjalankan skrip yang diberikan pada baris perintah.$ SayStuff | perl -pe 's/.* //' cucumberOpsinya dijelaskan di atas, kami hanya menghapus semuanya hingga spasi terakhir dan mencetak (
-p).$ perl -le 'print $ARGV[$#ARGV]' $(SayStuff) cucumbersDi sini kita memberikan
Watermelons and cucumberssebagai argumen, perl mana yang akan disimpan di@ARGarray dan karenanya, kami mencetak elemen terakhir dari@ARG. -
tipu daya. Yang ini menggunakan
seduntuk mengubah spasi menjadi baris baru lalutailuntuk mencetak hanya 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
Berikut beberapa penjelasan lainnya:
Usage: cut OPTION... [FILE]...
Print selected parts of lines from each FILE to standard output.
-d, --delimiter=DELIM
use DELIM instead of TAB for field delimiter
-f, --fields=LIST
select only these fields; also print any line that contains no
delimiter character, unless the -s option is specified
Jadi jika Anda membutuhkan bidang ke-3 dan dibatasi oleh spasi ' ' maka itu adalah
$ echo "Watermelons and cucumbers" | cut -d ' ' -f 3
cucumbers
Jika Anda menginginkan yang TERAKHIR Anda mungkin harus menggunakan awk .
Dalam hal ini menjadi:
$ echo "Semangka dan mentimun" | awk '{ cetak $NF }'
mentimun
Di awk NF adalah jumlah field dalam baris jadi $NF berarti kolom terakhir di baris.