GNU/Linux >> Belajar Linux >  >> Linux

Tutorial Perintah Awk Linux/UNIX dengan Contoh

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.


Linux
  1. Linux memperluas Tutorial Perintah Untuk Pemula (dengan Contoh)

  2. Tutorial perintah faktor Linux untuk pemula (dengan contoh)

  3. Tutorial Perintah Linux nproc untuk Pemula (dengan Contoh)

  1. Linux ya Tutorial Perintah untuk Pemula (dengan Contoh)

  2. Tutorial Perintah Linux tac untuk Pemula (dengan Contoh)

  3. Perintah JQ di Linux dengan Contoh

  1. Tutorial Perintah Ping Linux dengan Contoh

  2. Perintah wc Linux dengan Contoh

  3. Perintah AWK di Linux dengan Contoh