Contoh 1: Mencetak pelbagai lajur dari output perintah
Perintah berikut akan mencetak lajur kedua, ketiga, dan keempat dari output perintah, 'ls-l'. Di sini, nombor lajur dinyatakan dengan jelas, tetapi arahan yang lebih cekap untuk mencetak julat lajur yang sama ditunjukkan dalam contoh seterusnya.
$ ls -l | awk 'cetak $ 2, $ 3, $ 4'Output berikut dihasilkan oleh arahan di atas.
Contoh 2: Cetak julat lajur dari fail dengan menggunakan a untuk gelung
Untuk mengikuti contoh ini dan contoh lain dalam tutorial ini, buat fail teks bernama tanda.txt dengan kandungan berikut:
ID CSE203 CSE102 CSE2021109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58
Perintah 'awk' berikut akan mencetak tiga lajur tanda pertama.txt. The untuk gelung digunakan untuk mencetak nilai lajur, dan gelung merangkumi tiga langkah. The NF pemboleh ubah menunjukkan jumlah bilangan medan atau lajur fail.
$ tanda kucing.txt$ awk 'untuk (i = 1; i<=NF-1;i++) printf $i" "; print ""' marks.txt
Output berikut akan dihasilkan dengan menjalankan perintah. Keluaran menunjukkan pelajar ID dan tanda untuk CSE203 dan CSE102.
Contoh 3: Cetak julat lajur dengan menentukan pemboleh ubah permulaan dan akhir
Perintah 'awk' berikut akan mencetak tiga lajur pertama dari output perintah 'ls -l' dengan memulakan bermula dan penamat pemboleh ubah. Di sini, nilai bermula pemboleh ubah adalah 1, dan nilai pengakhiran pemboleh ubah ialah 3. Pemboleh ubah ini diulang dalam gelung untuk mencetak nilai lajur.
$ ls -l | awk 'BEGIN first = 1; terakhir = 3untuk (i = pertama; i < last; i++) printf("%s ", $i) print $last '
Output berikut akan muncul setelah menjalankan perintah. Output menunjukkan nilai tiga lajur pertama output, 'ls -l'.
Contoh 4: Mencetak pelbagai lajur dari fail dengan pemformatan
Perintah 'awk' berikut akan mencetak tiga lajur pertama tanda.txt menggunakan printf dan pemisah medan output (OFS). Di sini, untuk untuk gelung merangkumi tiga langkah, dan tiga lajur akan dicetak mengikut urutan dari fail. OFS digunakan di sini untuk menambahkan ruang antara lajur. Apabila nilai pembilang gelung (i) sama dengan pengakhiran pemboleh ubah, maka barisan baru (\ n) dihasilkan.
$ tanda kucing.txt$ awk -v start = 1 -v end = 3 'untuk (i = mula; i<=end;i++) printf("%s%s",
$ i, (i == akhir) ? "\ n": OFS) tanda.txt
Output berikut akan dihasilkan setelah menjalankan perintah di atas.
Contoh 5: Cetak julat lajur dari fail menggunakan pernyataan bersyarat
Perintah 'awk' berikut akan mencetak lajur pertama dan terakhir dari fail dengan menggunakan pernyataan untuk gelung dan pernyataan if. Di sini, gelung untuk merangkumi empat langkah. The bermula dan pengakhiran pemboleh ubah digunakan dalam skrip untuk menghilangkan lajur kedua dan ketiga dari fail dengan menggunakan syarat if. Pemboleh ubah OFS digunakan untuk menambahkan ruang antara lajur, dan pemboleh ubah ORS digunakan untuk menambahkan baris baru (\ n) setelah mencetak lajur terakhir.
$ tanda kucing.txt$ awk -v start = 2 -v end = 3 'untuk (i = 1; i<=NF;i++)
jika (i> = mulakan && i<=end) continue;
printf lain ("% s% s", $ i, (i!= NF) ? OFS: ORS) '.txt
Output berikut akan muncul setelah menjalankan perintah di atas. Keluaran menunjukkan lajur tanda pertama dan terakhir.txt.
Contoh 6: Cetak julat lajur dari fail menggunakan pemboleh ubah NF
Perintah 'awk' berikut akan mencetak lajur pertama dan terakhir dari fail dengan menggunakan pemboleh ubah NF. Tidak ada gelung atau pernyataan bersyarat yang digunakan untuk mencetak nilai lajur. NF menunjukkan bilangan medan. Terdapat empat lajur dalam tanda.txt. $ (NF-3) menentukan lajur pertama, dan $ NF menunjukkan lajur terakhir.
$ tanda kucing.txt$ awk 'print $ (NF-3) "" $ NF' tanda.txt
Output berikut dihasilkan dengan menjalankan perintah di atas. Keluaran menunjukkan lajur tanda pertama dan terakhir.txt.
Contoh 7: Cetak julat lajur dari fail menggunakan substr () dan index ()
Fungsi index () mengembalikan kedudukan jika nilai argumen kedua wujud pada nilai argumen pertama. Fungsi substr () boleh mengambil tiga argumen. Argumen pertama adalah nilai rentetan, argumen kedua adalah kedudukan permulaan, dan argumen ketiga adalah panjang. Argumen ketiga substr () dihilangkan dalam perintah berikut. Kerana lajur bermula dari $ 1 dalam perintah 'awk', fungsi index () akan mengembalikan $ 3, dan perintah akan dicetak dari $ 3 hingga $ 4.
$ tanda kucing.txt$ awk 'print substr ($ 0, index ($ 0, $ 3))' tanda.txt
Output berikut akan dihasilkan dengan menjalankan perintah di atas.
Contoh 8: Mencetak rangkaian lajur dari satu fail dengan menggunakan printf secara berurutan
Perintah 'awk' berikut akan mencetak lajur tanda pertama, kedua dan ketiga.txt dengan menetapkan ruang yang cukup untuk 10 aksara.
$ tanda kucing.txt$ awk '// printf "% 10s% 10s% 10s \ n", $ 1, $ 3, $ 2' markah.txt
Output berikut akan dihasilkan dengan menjalankan perintah di atas.
Kesimpulannya
Terdapat pelbagai cara untuk mencetak pelbagai lajur dari output perintah atau fail. Tutorial ini menunjukkan bagaimana arahan 'awk' dapat membantu pengguna Linux mencetak kandungan dari data tabular.