awk

Cara mencetak rentang kolom menggunakan perintah 'awk'

Cara mencetak rentang kolom menggunakan perintah 'awk'
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 menjalankan file skrip 'awk'. Dalam tutorial ini, kami akan menunjukkan cara mencetak berbagai 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 berikut.

$ ls -l | 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 tanda.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 tanda pertama.txt. Itu untuk loop digunakan untuk mencetak nilai kolom, dan loop mencakup tiga langkah. Itu NF variabel menunjukkan jumlah total bidang atau kolom file.

$ tanda kucing.txt
$ awk 'untuk(i=1;i .)<=NF-1;i++) printf $i" "; print ""' marks.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 -l | awk ' MULAI pertama = 1; terakhir = 3
untuk (i = pertama; i < last; i++) printf("%s ", $i) print $last '

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 pemformatan

Perintah 'awk' berikut akan mencetak tiga kolom pertama dari tanda.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 menambahkan ruang antar kolom. Ketika nilai counter dari loop (i) sama dengan akhir variabel, maka baris baru(\n) dihasilkan.

$ tanda kucing.txt
$ awk -v start=1 -v end=3 ' for (i=start; 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 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 if. Di sini, for loop mencakup empat langkah:. Itu 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 (\n) setelah mencetak kolom terakhir.

$ tanda kucing.txt
$ awk -v start=2 -v end=3 ' for (i=1; i<=NF;i++)
jika( i>=mulai && i<=end) continue;
else printf("%s%s", $i,(i!= NF) ? OFS : ORS) ' tanda.txt

Output berikut akan muncul setelah menjalankan perintah di atas. Output menunjukkan kolom tanda pertama dan terakhir.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 dalam tanda.txt. $(NF-3) mendefinisikan kolom pertama, dan $NF menunjukkan kolom terakhir.

$ tanda kucing.txt
$ awk 'print $(NF-3)" "$NF' tanda.txt

Output berikut dihasilkan dengan menjalankan perintah di atas:. Output menunjukkan kolom tanda pertama dan terakhir.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.

$ tanda kucing.txt
$ awk 'print substr($0,index($0,$3))' tanda.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 tanda pertama, kedua, dan ketiga.txt dengan mengatur ruang yang cukup untuk 10 karakter.

$ tanda kucing.txt
$ awk '//printf "%10s %10s %10s\n",$1,$3,$2 ' tanda.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.

Cara Menginstal dan Memainkan Doom di Linux
Pengantar Doom Seri Doom berasal dari tahun 90-an setelah rilis Doom. Itu adalah hit instan dan sejak saat itu seri game telah menerima banyak penghar...
Vulkan untuk Pengguna Linux
Dengan setiap generasi baru kartu grafis, kami melihat pengembang game mendorong batas kesetiaan grafis dan selangkah lebih dekat ke fotorealisme. Tet...
OpenTTD vs Simutrans
Membuat simulasi transportasi Anda sendiri bisa menyenangkan, santai, dan sangat menarik. Itulah mengapa Anda perlu memastikan bahwa Anda mencoba game...