Cara mencetak rentang kolom menggunakan perintah `awk`

How Print Range Columns Using Awk Command

Perintah `awk` adalah salah satu dari banyak perintah yang dapat digunakan untuk mencetak berbagai kolom dari data tabular di Linux. Perintah `awk` dapat digunakan langsung dari terminal dengan mengeksekusi file skrip `awk`. Dalam tutorial ini, kami akan menunjukkan cara mencetak rentang kolom dari data tabular.

Contoh 1: Cetak rentang kolom dari output perintah

Perintah berikut akan mencetak kolom kedua, ketiga, dan keempat dari output perintah, 'Ls -l '. Di sini, nomor kolom dinyatakan secara eksplisit, tetapi perintah yang lebih efisien untuk mencetak rentang kolom yang sama ditunjukkan pada contoh berikutnya.



$ls -NS | awk '{ cetak $2, $3, $4 }'

Output berikut dihasilkan oleh perintah di atas.





Contoh 2: Cetak rentang kolom dari file dengan menggunakan a untuk lingkaran

Untuk mengikuti contoh ini dan contoh lain dalam tutorial ini, buat file teks bernama mark.txt dengan konten 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 kolom pertama dari marks.txt. NS untuk loop digunakan untuk mencetak nilai kolom, dan loop mencakup tiga langkah. NS NF variabel menunjukkan jumlah total bidang atau kolom file.

$kucingmark.txt
$awk '{untuk(i=1;i .)<=NF-1;i++) printf $i' '; print ''}'mark.txt

Output berikut akan dihasilkan dengan menjalankan perintah. Outputnya menunjukkan siswa ID dan tanda untuk CSE203 dan CSE102 .



Contoh 3: Cetak rentang kolom dengan mendefinisikan variabel awal dan akhir

Perintah `awk` berikut akan mencetak tiga kolom pertama dari output perintah 'ls -l' dengan menginisialisasi mulai dan akhir variabel. Di sini, nilai mulai variabel adalah 1, dan nilai akhir variabelnya adalah 3. Variabel-variabel ini diulang dalam for loop untuk mencetak nilai kolom.

$ls -NS | awk ' MULAI { pertama = 1; terakhir = 3 }
{ untuk (i = pertama; i

Output berikut akan muncul setelah menjalankan perintah. Output menunjukkan tiga nilai kolom pertama dari output, 'ls -l'.

Contoh 4: Cetak rentang kolom dari file dengan format

Perintah `awk` berikut akan mencetak tiga kolom pertama dari mark.txt menggunakan printf dan pemisah bidang keluaran ( OFS ). Di sini, for loop mencakup tiga langkah, dan tiga kolom akan dicetak secara berurutan dari file. OFS digunakan di sini untuk menambah ruang antar kolom. Ketika nilai counter dari loop (i) sama dengan akhir variabel, maka baris baru( ) dihasilkan.

$kucingmark.txt
$awk -v Mulailah=1 -v akhir=3 '{ untuk (i=mulai; i<=end;i++) printf('%s%s',
$i,(i==akhir) ? ' ' : OFS) }'
mark.txt

Output berikut akan dihasilkan setelah menjalankan perintah di atas.

Contoh 5: Cetak rentang kolom dari file menggunakan pernyataan bersyarat

Perintah `awk` berikut akan mencetak kolom pertama dan terakhir dari sebuah file dengan menggunakan for loop dan pernyataan if. Di sini, for loop mencakup empat langkah. NS mulai dan akhir variabel digunakan dalam skrip untuk menghilangkan kolom kedua dan ketiga dari file dengan menggunakan kondisi if. Variabel OFS digunakan untuk menambah spasi antar kolom, dan variabel ORS digunakan untuk menambahkan baris baru ( ) setelah mencetak kolom terakhir.

$kucingmark.txt
$awk -v Mulailah=2 -v akhir=3 '{ untuk (i=1; i<=NF;i++)
jika( i>=mulai && i<=end) continue;
else printf('%s%s', $i,(i!=NF) ? OFS : ORS) }'
mark.txt

Output berikut akan muncul setelah menjalankan perintah di atas. Output menunjukkan kolom pertama dan terakhir dari marks.txt.

Contoh 6: Cetak rentang kolom dari file menggunakan variabel NF

Perintah `awk` berikut akan mencetak kolom pertama dan terakhir dari file dengan menggunakan variabel NF. Tidak ada loop atau pernyataan kondisional yang digunakan untuk mencetak nilai kolom. NF menunjukkan jumlah bidang. Ada empat kolom di marks.txt. $(NF-3) mendefinisikan kolom pertama, dan $NF menunjukkan kolom terakhir.

$kucingmark.txt
$awk '{cetak $(NF-3)' '$NF}'mark.txt

Output berikut dihasilkan dengan menjalankan perintah di atas. Output menunjukkan kolom pertama dan terakhir dari marks.txt.

Contoh 7: Cetak rentang kolom dari file menggunakan substr() dan index()

Fungsi index() mengembalikan posisi jika nilai argumen kedua ada di nilai argumen pertama. Fungsi substr() dapat mengambil tiga argumen. Argumen pertama adalah nilai string, argumen kedua adalah posisi awal, dan argumen ketiga adalah panjangnya. Argumen ketiga dari substr() dihilangkan dalam perintah berikut. Karena kolom dimulai dari $1 dalam perintah `awk`, fungsi index() akan mengembalikan $3, dan perintah akan mencetak dari $3 hingga $4.

$kucingmark.txt
$awk '{cetak substr($0,index($0,$3))}'mark.txt

Output berikut akan dihasilkan dengan menjalankan perintah di atas.

Contoh 8: Secara berurutan mencetak rentang kolom dari file menggunakan printf

Perintah `awk` berikut akan mencetak kolom pertama, kedua, dan ketiga dari marks.txt dengan mengatur ruang yang cukup untuk 10 karakter.

$kucingmark.txt
$awk '//{printf '%10s %10s %10s ',$1,$3,$2 }'mark.txt

Output berikut akan dihasilkan dengan menjalankan perintah di atas.

Kesimpulan

Ada berbagai cara untuk mencetak rentang kolom dari output perintah atau file. Tutorial ini menunjukkan bagaimana perintah `awk` dapat membantu pengguna Linux untuk mencetak konten dari data tabular.