Awk adalah bahasa skrip yang digunakan untuk memproses atau menganalisis file teks. Atau kita dapat mengatakan bahwa perintah awk terutama digunakan untuk mengelompokkan data berdasarkan kolom atau bidang, atau pada kumpulan kolom. Terutama digunakan untuk melaporkan data dengan cara yang bermanfaat. Ini juga menggunakan Blok Mulai dan Akhir untuk memproses data.
AWK Singkatan dari ‘Aho, Weinberger, dan Kernighan‘
Dalam tutorial ini, kita akan mempelajari perintah awk dengan contoh praktis.
Sintaks awk
# awk 'pola {action}' file input> file output
Mari kita ambil file input dengan data berikut
$ cat awk_file Name,Marks,Max Marks Ram,200,1000 Shyam,500,1000 Ghyansham,1000 Abharam,800,1000 Hari,600,1000 Ram,400,1000
Sekarang, mari selami contoh praktis perintah awk.
1) Cetak semua baris dari sebuah file
Secara default, awk mencetak semua baris file, jadi untuk mencetak setiap baris file yang dibuat di atas gunakan perintah di bawah ini:
$ awk '{print;}' awk_file Name,Marks,Max Marks Ram,200,1000 Shyam,500,1000 Ghyansham,1000 Abharam,800,1000 Hari,600,1000 Ram,400,1000
Catatan: Dalam perintah awk '{print;}' digunakan untuk mencetak semua bidang beserta nilainya.
2) Cetak hanya bidang tertentu seperti ke-2 &ke-3
Dalam perintah awk, kita menggunakan simbol $ (dollar) diikuti dengan nomor field untuk mencetak nilai field. Dalam contoh di bawah ini, kami mencetak bidang 2 (yaitu Tanda) dan bidang 3 (yaitu Tanda Maks)
$ awk -F "," '{print $2, $3;}' awk_file Marks Max Marks 200 1000 500 1000 1000 800 1000 600 1000 400 1000
Pada perintah di atas, kami telah menggunakan opsi -F “,” yang menetapkan bahwa koma (,) adalah pemisah bidang dalam file.
3) Cetak garis yang sesuai dengan pola
Saya ingin mencetak baris yang berisi kata “Hari &Ram”, jalankan
$ awk '/Hari|Ram/' awk_file Ram,200,1000 Hari,600,1000 Ram,400,1000
4) Bagaimana cara menemukan nilai unik di kolom pertama nama
Untuk mencetak nilai unik dari kolom pertama, jalankan perintah awk di bawah ini
$ awk -F, '{a[$1];}END{for (i in a)print i;}' awk_file Abharam Hari Name Ghyansham Ram Shyam
5) Cara menemukan jumlah entri data dalam kolom tertentu
Dalam perintah awk, juga dimungkinkan untuk melakukan beberapa operasi aritmatika berdasarkan pencarian, sintaksnya ditunjukkan di bawah ini
$ awk -F, ‘$1==”Item1″{x+=$2;}END{print x}’ awk_file
Pada contoh di bawah ini, kami mencari Ram dan kemudian kami menambahkan nilai bidang ke-2 untuk kata Ram.
$ awk -F, '$1=="Ram"{x+=$2;}END{print x}' awk_file 600
6) Cara mencari jumlah semua bilangan dalam satu kolom
Dalam perintah awk, kita juga dapat menghitung jumlah semua angka dalam kolom file. Pada contoh di bawah ini kita menghitung jumlah semua bilangan kolom ke-2 dan ke-3.
$ awk -F"," '{x+=$2}END{print x}' awk_file 3500 $ awk -F"," '{x+=$3}END{print x}' awk_file 5000
7) Cara menemukan jumlah record grup individual
Misalnya, jika kita mempertimbangkan kolom pertama maka kita dapat melakukan penjumlahan untuk kolom pertama berdasarkan item
$ awk -F, '{a[$1]+=$2;}END{for(i in a)print i", "a[i];}' awk_file Abharam, 800 Hari, 600 Name, 0 Ghyansham, 1000 Ram, 600 Shyam, 500
8) Temukan jumlah semua entri kolom tertentu dan tambahkan ke akhir file
Seperti yang telah kita bahas bahwa perintah awk dapat melakukan penjumlahan semua nomor kolom, jadi untuk menambahkan jumlah kolom 2 dan kolom 3 di akhir file, jalankan
$ awk -F"," '{x+=$2;y+=$3;print}END{print "Total,"x,y}' awk_file Name,Marks,Max Marks Ram,200,1000 Shyam,500,1000 Ghyansham,1000 Abharam,800,1000 Hari,600,1000 Ram,400,1000 Total,3500 5000
9) Bagaimana menemukan jumlah entri terhadap setiap kolom berdasarkan kolom pertama
$ awk -F, '{a[$1]++;}END{for (i in a)print i, a[i];}' awk_file Abharam 1 Hari 1 Name 1 Ghyansham 1 Ram 2 Shyam 1
10) Cara mencetak hanya record pertama dari setiap grup
Untuk mencetak hanya pertama dari setiap grup, jalankan perintah awk di bawah ini
$ awk -F, '!a[$1]++' awk_file Name,Marks,Max Marks Ram,200,1000 Shyam,500,1000 Ghyansham,1000 Abharam,800,1000 Hari,600,1000
AWK Mulai Blok
Sintaks untuk blok BEGIN adalah
$ awk ‘BEGIN{awk initializing code}{actual AWK code}’ File-Name
Mari kita buat file data dengan konten di bawah ini
11) Cara mengisi setiap nama kolom beserta data terkaitnya
$ awk 'BEGIN{print "Names\ttotal\tPPT\tDoc\txls"}{printf "%-s\t%d\t%d\t%d\t%d\n", $1,$2,$3,$4,$5}' datafile
12) Cara mengubah pemisah bidang
Seperti yang kita lihat spasi adalah pemisah bidang dalam file data , pada contoh di bawah ini kita akan mengubah pemisah bidang dari spasi menjadi “|”
$ awk 'BEGIN{OFS="|"}{print $1,$2,$3,$4,$5}' datafile
Itu saja dari tutorial ini, saya harap Anda merasa informatif. Silakan bagikan umpan balik dan pertanyaan Anda di bagian komentar di bawah ini.