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.