Linux Command - Awk Built-in Variables



 
Linux Command - Awk Built-in Variables
Linux Command - Awk Built-in Variables
1.     NR (Number of Record)
Perintah ini digunakan untuk menampilkan nomor baris di file
[root@dbdev ~]# awk '{print NR,$0}' employee.txt 
1 alex IT manager 1000
2 anan IT Support 200
3 ana IT programmer 500
4 ina IT sysadmin 700
5 ito IT sysadmin 600
6 ani IT programmer 430
7 anin IT Support 400
8 ilax IT manager 2000

2.     NF (Number of Fields)
Perintah ini memberikan total variable yang ada dalam line
[root@dbdev ~]# awk '{print NR,"->",NF}' employee.txt 
1 -> 4
2 -> 4
3 -> 4
4 -> 4
5 -> 4
6 -> 4
7 -> 4
8 -> 4

3.     FS (Field Separator)
Awk membaca dan mengkonversi line menjadi variable $1, $2 dan seterusnya. Kita juga dapt memberikan separator atau karakter lainnya menggunakan perintah FS ini.

Syntax :

$ awk -F 'FS' 'commands' inputfilename
(or)
$ awk 'BEGIN{FS="FS";}'

untuk contoh kita akan membuat file etc_password.awk yang akan kita gunakan untuk membaca log password di /etc/passwd
 GNU nano 2.3.1                             File: etc_password.awk                                                        Modified  

BEGIN{
FS=":";
print "Name\tUserID\tGroupID\tHomeDirectory";
}
{
        print $1"\t"$3"\t"$4"\t"$6;
}
END {
        print NR,"Records Processed";
}
kemudian kita jalankan perintah dibawah ini
 [root@dbdev ~]# awk -f etc_password.awk /etc/passwd
Name    UserID  GroupID HomeDirectory
root    0       0       /root
bin     1       1       /bin
daemon  2       2       /sbin
adm     3       4       /var/adm
lp      4       7       /var/spool/lpd
sync    5       0       /sbin
shutdown        6       0       /sbin
halt    7       0       /sbin
mail    8       12      /var/spool/mail
operator        11      0       /root
games   12      100     /usr/games
ftp     14      50      /var/ftp
nobody  99      99      /
systemd-network 192     192     /
dbus    81      81      /
polkitd 999     998     /
sshd    74      74      /var/empty/sshd
postfix 89      89      /var/spool/postfix
chrony  998     996     /var/lib/chrony
postgres        26      26      /var/lib/pgsql
apache  48      48      /usr/share/httpd
munin   997     995     /var/lib/munin
rabbitmq        996     994     /var/lib/rabbitmq
23 Records Processed


4.     RS (Record Separator)
RS menyimpan karakter pemisah yang berupa baris baru. Bisa dikombinasikan dengan FS untuk penggunaanya. Untuk lebih jelasnya kita buat file baru yaitu employee2.txt.
[root@dbdev ~]# cat employee2.txt 
alex
manager
11

anan
support
22

ana
programmer
33

ina
sysadmin
44

ito
sysadmin
55    
setelah itu kita buat file employee.awk yang berisi
[root@dbdev ~]# cat employee.awk 
BEGIN {
        RS="\n\n";
        FS="\n";

}
{
        print $1,$2;
}

 setelah itu jalan kan perintah
[root@dbdev ~]# awk -f employee.awk employee2.txt 
alex manager
anan support
ana programmer
ina sysadmin
ito sysadmin
pada script employee.awk membaca setiap detail employee sebagai catatan tunggal karena awk RS menggandakan karakter baris baru. Dan setiap baris adalah bidang, karena FS adalah karakter baris baru. Gampangnya sih dari baris menjadi kolom CMIIW :D
5.     OFS (Output Field Separator)
Awk OFS adalah output yang setara dengan variabel FS awk. Secara default awk OFS adalah karakter spasi tunggal.
6.       [root@dbdev ~]# awk -F':' 'BEGIN{OFS="-";} {print $3,$4;}' /etc/passwd
0-0
1-1
2-2
3-4
4-7
5-0
6-0
7-0
8-12
11-0
12-100
14-50
99-99
192-192
81-81
999-998
74-74
89-89
998-996
26-26
48-48
997-995

7.     ORS (Output Record Separator)
Perintah ORS menyimpan pemisah catatan keluaran, yang memisahkan garis keluaran saat Awk menampilkannya. Standarnya adalah karakter baris baru. cetak secara otomatis menampilkan konten ORS pada akhir apa pun yang diberikan untuk ditampilkan.
[root@dbdev ~]# awk 'BEGIN{ORS="=";} {print;}' employee.txt 
alex IT manager 1000=anan IT Support 200=ana IT programmer 500=ina IT sysadmin 700=ito IT sysadmin 600=ani IT programmer 430=anin IT Support 400=ilax IT manager 2000=



Post a Comment

Previous Post Next Post