Cara Menggunakan Perintah 'Seterusnya' dengan Awk di Linux - Bahagian 6

Cara Menggunakan Perintah 'Seterusnya' dengan Awk di Linux - Bahagian 6

Di bahagian keenam siri AWK, kita akan melihat menggunakan Seterusnya perintah, yang memberitahu Awk Untuk melangkau semua corak dan ungkapan yang telah anda berikan, tetapi sebaliknya membaca baris input seterusnya.

The Seterusnya Perintah membantu anda untuk mengelakkan melaksanakan apa yang akan saya rujuk sebagai langkah membuang masa dalam pelaksanaan arahan.

Untuk memahami bagaimana ia berfungsi, marilah kita mempertimbangkan fail yang dipanggil Makanan_list.txt yang kelihatan seperti ini:

Item Senarai Makanan
Tiada barang_ nama harga kuantiti 1 mangga $ 3.45 5 2 epal $ 2.45 25 3 Nanas $ 4.45 55 4 tomato $ 3.45 25 5 Bawang $ 1.45 15 6 pisang $ 3.45 30 

Pertimbangkan menjalankan arahan berikut yang akan menandakan barang makanan yang kuantiti kurang dari atau sama dengan 20 dengan (*) Tandatangan pada akhir setiap baris:

# awk '$ 4 20 cetak $ 0;' food_list.txt Tiada barang_ nama harga kuantiti 1 mangga $ 3.45 5 * 2 epal $ 2.45 25 3 Nanas $ 4.45 55 4 tomato $ 3.45 25 5 Bawang $ 1.45 15 * 6 pisang $ 3.45 30 

Perintah di atas sebenarnya berfungsi seperti berikut:

  1. Pertama, ia memeriksa sama ada kuantiti, medan keempat setiap baris input kurang daripada atau sama dengan 20, Sekiranya nilai memenuhi syarat itu, ia dicetak dan dibenderakan dengan (*) Tandatangan pada akhir menggunakan ekspresi satu: $ 4 <= 20
  2. Kedua, ia memeriksa jika medan keempat setiap baris input lebih besar daripada 20, Dan jika garis memenuhi syarat, ia akan dicetak menggunakan ekspresi dua: $ 4> 20

Tetapi ada satu masalah di sini, ketika ungkapan pertama dilaksanakan, garis yang kita mahu bendera dicetak menggunakan: printf "%s \ t%s \ n", $ 0, "**"; Dan kemudian dalam langkah yang sama, ungkapan kedua juga diperiksa yang menjadi faktor membuang masa.

Oleh itu, tidak perlu melaksanakan ungkapan kedua, $ 4> 20 Sekali lagi selepas mencetak garis yang telah ditandakan yang telah dicetak menggunakan ungkapan pertama.

Untuk menangani masalah ini, anda mesti menggunakan Seterusnya Perintah seperti berikut:

# awk '$ 4 20 cetak $ 0;' food_list.txt Tiada barang_ nama harga kuantiti 1 mangga $ 3.45 5 * 2 epal $ 2.45 25 3 Nanas $ 4.45 55 4 tomato $ 3.45 25 5 Bawang $ 1.45 15 * 6 pisang $ 3.45 30 

Selepas satu baris input dicetak menggunakan $ 4 <= 20 printf "%s \ t%s \ n", $ 0, "*"; Seterusnya; , The Seterusnya termasuk arahan akan membantu melangkau ungkapan kedua $ 4> 20 cetak $ 0;, Oleh itu, pelaksanaan pergi ke garisan input seterusnya tanpa perlu membuang masa untuk memeriksa sama ada kuantiti lebih besar daripada 20.

The Seterusnya Perintah sangat penting ialah menulis arahan yang cekap dan jika perlu, anda boleh menggunakan untuk mempercepat pelaksanaan skrip. Sediakan untuk bahagian seterusnya siri di mana kita akan melihat menggunakan input standard (Stdin) sebagai input untuk Awk.

Harap anda dapati ini cara membimbing membantu dan anda boleh seperti yang selalu meletakkan pemikiran anda secara bertulis dengan meninggalkan komen di bahagian komen di bawah.