Cara menggunakan perintah 'Next' dengan AWK di Linux - Bagian 6

Cara menggunakan perintah 'Next' dengan AWK di Linux - Bagian 6

Di bagian keenam dari seri AWK ini, kita akan melihat menggunakan Berikutnya perintah, yang memberitahu AWK Untuk melewatkan semua pola dan ekspresi yang tersisa yang telah Anda berikan, tetapi sebaliknya membaca baris input berikutnya.

Itu Berikutnya Perintah membantu Anda untuk mencegah mengeksekusi apa yang akan saya sebut sebagai langkah pemborosan waktu dalam eksekusi perintah.

Untuk memahami cara kerjanya, mari kita pertimbangkan file yang dipanggil food_list.txt Sepertinya ini:

Item Daftar Makanan
No Item_Name Harga Kuantitas 1 Mangga $ 3.45 5 2 Apel $ 2.45 25 3 Nanas $ 4.45 55 4 Tomat $ 3.45 25 5 bawang $ 1.45 15 6 Pisang $ 3.45 30 

Pertimbangkan menjalankan perintah berikut yang akan menandai makanan makanan yang jumlahnya kurang dari atau sama 20 dengan (*) tanda di akhir setiap baris:

# awk '$ 4 20 print $ 0;' food_list.txt No Item_Name Harga Kuantitas 1 Mangga $ 3.45 5 * 2 apel $ 2.45 25 3 Nanas $ 4.45 55 4 Tomat $ 3.45 25 5 bawang $ 1.45 15 * 6 pisang $ 3.45 30 

Perintah di atas sebenarnya berfungsi sebagai berikut:

  1. Pertama, ia memeriksa apakah kuantitas, bidang keempat dari setiap baris input kurang dari atau sama dengan 20, Jika suatu nilai memenuhi kondisi itu, itu dicetak dan ditandai dengan (*) Masuk di akhir menggunakan ekspresi satu: $ 4 <= 20
  2. Kedua, ia memeriksa apakah bidang keempat dari setiap baris input lebih besar dari 20, Dan jika sebuah garis memenuhi kondisi yang dicetak menggunakan ekspresi dua: $ 4> 20

Tapi ada satu masalah di sini, saat ekspresi pertama dieksekusi, baris yang ingin kami bendera dicetak menggunakan: printf "%s \ t%s \ n", $ 0, "**"; dan kemudian pada langkah yang sama, ekspresi kedua juga diperiksa yang menjadi faktor pemborosan waktu.

Jadi tidak perlu menjalankan ekspresi kedua, $ 4> 20 Sekali lagi setelah mencetak garis yang sudah ditandai yang telah dicetak menggunakan ekspresi pertama.

Untuk menangani masalah ini, Anda harus menggunakan Berikutnya Perintah sebagai berikut:

# awk '$ 4 20 print $ 0;' food_list.txt No Item_Name Harga Kuantitas 1 Mangga $ 3.45 5 * 2 apel $ 2.45 25 3 Nanas $ 4.45 55 4 Tomat $ 3.45 25 5 bawang $ 1.45 15 * 6 pisang $ 3.45 30 

Setelah satu baris input dicetak menggunakan $ 4 <= 20 printf "%s \ t%s \ n", $ 0, "*"; Berikutnya ; , itu Berikutnya Perintah disertakan akan membantu melewatkan ekspresi kedua $ 4> 20 cetak $ 0;, Jadi eksekusi pergi ke baris input berikutnya tanpa harus membuang waktu untuk memeriksa apakah jumlahnya lebih besar dari 20.

Itu Berikutnya Perintah sangat penting adalah menulis perintah yang efisien dan jika perlu, Anda selalu dapat menggunakan untuk mempercepat eksekusi skrip. Persiapkan untuk bagian selanjutnya dari seri di mana kita akan melihat menggunakan input standar (Stdin) sebagai input untuk AWK.

Semoga Anda menemukan cara membimbing ini bermanfaat dan Anda dapat selalu menempatkan pikiran Anda secara tertulis dengan meninggalkan komentar di bagian komentar di bawah ini.