Cara mencetak pelbagai lajur menggunakan perintah `awk`

How Print Range Columns Using Awk Command



Perintah `awk` adalah salah satu dari banyak perintah yang dapat digunakan untuk mencetak pelbagai lajur dari data tabular di Linux. Perintah `awk` dapat digunakan langsung dari terminal dengan menjalankan fail skrip` awk`. Dalam tutorial ini, kami akan menunjukkan kepada anda cara mencetak pelbagai lajur dari data tabel.

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.