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 -tempat | 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 marks.txt dengan kandungan berikut :
ID CSE203 CSE102 CSE202
1109 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 pertama marks.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.
$kucingmarks.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 pengakhiran 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 -tempat | awk 'MULAKAN {pertama = 1; terakhir = 3}{untuk (i = pertama; i
Output berikut akan muncul setelah menjalankan perintah. Output menunjukkan tiga nilai lajur pertama output, 'ls -l'.
Contoh 4: Mencetak pelbagai lajur dari fail dengan pemformatan
Perintah `awk` berikut akan mencetak tiga lajur pertama marks.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.
$kucingmarks.txt$awk -v mulakan=1 -v akhir=3 '{untuk (i = mula; i<=end;i++) printf('%s%s',
$ i, (i == akhir)? ' n': OFS)} 'marks.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 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 di antara lajur, dan pemboleh ubah ORS digunakan untuk menambahkan baris baru ( n) setelah mencetak lajur terakhir.
$kucingmarks.txt$awk -v mulakan=2 -v akhir=3 '{untuk (i = 1; i<=NF;i++)
jika (i> = mulakan && i<=end) continue;
lain-lain printf ('% s% s', $ i, (i! = NF)? OFS: ORS)} 'marks.txt
Output berikut akan muncul setelah menjalankan perintah di atas. Keluaran menunjukkan lajur pertama dan terakhir marks.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 di marks.txt. $ (NF-3) menentukan lajur pertama, dan $ NF menunjukkan lajur terakhir.
$kucingmarks.txt$awk '{cetak $ (NF-3)' '$ NF}'marks.txt
Output berikut dihasilkan dengan menjalankan perintah di atas. Keluaran menunjukkan lajur pertama dan terakhir marks.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.
$kucingmarks.txt$awk '{substrat cetak ($ 0, indeks ($ 0, $ 3))}'marks.txt
Output berikut akan dihasilkan dengan menjalankan perintah di atas.
Contoh 8: Mencetak berurutan lajur dari fail menggunakan printf secara berurutan
Perintah `awk` berikut akan mencetak lajur marks.txt pertama, kedua, dan ketiga dengan menetapkan ruang yang cukup untuk 10 aksara.
$kucingmarks.txt$awk '// {printf'% 10s% 10s% 10s n ', $ 1, $ 3, $ 2}'marks.txt
Output berikut akan dihasilkan dengan menjalankan perintah di atas.
Kesimpulannya
Ada 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.