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=
Tags:
Linux