Pada tugas 5 kali ini kita akan membuat kalender dari awk tools. Calendar ini akan menampilkan Hari dan pasaran tanggal lahir inputan.
Pertama kita buat file input.txt yang berisi nama dan tanggal lahir:
yanuar 19 1 1989
Soleh 20 2 1988
Soleha 23 1 1989
Priyadi 12 3 1987
Supriyadi 12 4 1988
Paijo 11 2 1989
Suratno 11 3 1989
Sumardi 27 3 1988
Priyo 22 4 1989
Sarimin 17 8 1989
Susi 17 4 1990
Panji 25 9 1989
Dayat 12 12 1989
Heriyanto 11 10 1989
Budiyanto 27 11 1988
Kedua kita buat rumus dengan file coba.txt:
{
nm=$1;
tgl=$2;
bln=$3;bln1=int(bln)
tahun=$4;
if (bln1<=12&&bln1!=0)
{
thn=tahun-1;
thk=thn/4;
thb=thn-int(thk);
jumth=tahun%4;
bulan=bln-1;
if (jumth==0){
if(bulan==0)
i=31;
if(bulan==1)
i=62;
if(bulan==2)
i=91;
if(bulan==3)
i=122;
if(bulan==4)
i=152;
if(bulan==5)
i=183;
if(bulan==6)
i=213;
if(bulan==7)
i=244;
if(bulan==8)
i=275;
if(bulan==9)
i=305;
if(bulan==10)
i=336;
if(bulan==11)
i=366;
}
else
{
if(bulan==0)
i=31;
if(bulan==1)
i=62;
if(bulan==2)
i=90;
if(bulan==3)
i=121;
if(bulan==4)
i=151;
if(bulan==5)
i=182;
if(bulan==6)
i=212;
if(bulan==7)
i=243;
if(bulan==8)
i=274;
if(bulan==9)
i=304;
if(bulan==10)
i=335;
if(bulan==11)
i=365;
}
kab=366*int(thk);
br=365*thb;
tothar=(kab)+(br)+i+tgl;
hr=tothar%7;
printf(nm);
{
if(hr==0)
printf("\t\tHari = RABU\n");
else if(hr==1)
printf("\t\tHari = KAMIS\n");
else if(hr==2)
printf("\t\tHari = JUM'AT\n");
else if(hr==3)
printf("\t\tHari = SABTU\n");
else if(hr==4)
printf("\t\tHari = MINGGU\n");
else if(hr==5)
printf("\t\tHari = SENIN\n");
else
printf("\t\tHari = SELASA\n");
}
psr=tothar%5;{
if(psr==0)
printf("\t\tPasaran = KLIWON\n");
else if(psr==1)
printf("\t\tPasaran = LEGI\n");
else if(psr==2)
printf("\t\tPasaran = PAHING\n");
else if(psr==3)
printf("\t\tPasaran = PON\n");
else
printf("\t\tPasaran = WAGE\n");
}
}
}
Ketiga :Jalankan ke 2 file tersebut dengan perintah
$ awk -f coba.txt input.txt
Maka akan muncul di tampilan sbg berikut
yanuar Hari = KAMIS
Pasaran = Pahing
Soleh Hari = Sabtu
Pasaran = PON
Soleha Hari = SENIN
Pasaran = LEGI
Priyadi Hari = KAMIS
Pasaran = PON
Supriyadi Hari = SELASA
Pasaran = KLIWON
Paijo Hari = SABTU
Pasaran = KLIWON
Suratno Hari = SABTU
Pasaran = PON
Sumardi Hari = MINGGU
Pasaran = WAGE
Priyo Hari = SABTU
Pasaran = KLIWON
Sarimin Hari = KAMIS
Pasaran = PAHING
Susi Hari = SELASA
Pasaran = KLIWON
Panji Hari = SENIN
Pasaran = LEGI
Dayat Hari = SELASA
Pasaran = WAGE
Heriyanto Hari = Rabu
Pasaran = Pahing
Budiyanto Hari = MINGGU
Pasaran = WAGE
Now this Time to Celebrate.....
Tugas 5 Dan Tugas 6 Calendar
Ditulis Oleh Yanuar Setiawan Rabu, 24 Juni 2009 di 18.22
Tugas 4
Ditulis Oleh Yanuar Setiawan Rabu, 17 Juni 2009 di 20.34
Untuk membuat bujur sangkar kita inputkan kolom ke-1 pada input.txt adalah sebagai input ordonya. Sedangkan kolom ke-2 adalah nilai awal yang diberikan sebelum terjadinya increment. Kemudian kolom ke-3 adalah jumlah nilai kenaikan pada setiap ordo matriks.
Ketikkan program dibawah ini dengan gedit atau vim simpan dengan nama mat.awk simpan di direktori home
{
matrik[15,15]; #array untuk ordo maximal bujur sangkar
n=$1; #jumlah ordo yang dicari berada pada kolom 1 harus ganjil
X=$2; #input nilai awal berada pada kolom 2
Y=$3; #nilai kenaikan, pada kol0m 3
Z=$4; #kenaikan setiap pindah interval, pada kolom 4
for(i=0; i<=n+2; i++)
{
for(b=0; b<=n+2; b++)
matrik[i,b] = 0;
}
i=1; b=(n+1) / 2;
X-=Y;
for(N=1; N<=n*n;)
{ if(matrik[i,b]==0)
{
X+=Y;
matrik[i,b] = X;
if(i==n)
matrik[0,b] = X;
if(b==1)
matrik[i,n+1] = X;
if(i==n && b==1 )
matrik[0,n+1] = X;
i--; b++; N++;
if(i==0&&b==n+1)
continue;
else
{
if (i==0) i=n;
if(b==n+1) b=1;
}
}
else
{
i+=2;
b-=1;
X=X-Y+Z;
}
}
for(i=1; i<=n; i++)
T1+=matrik[i,n+1-i];
for(i=1; i<=n*5;i++)
printf(" ");
printf("%5d\n\n",T1);
for(i=1;i<=n+1;i++)
{
for(b=1; b<=n; b++)
{
printf("%5d", matrik[i,b]);
matrik[a,n+2] += matrik[i,b];
matrik[n+1,b] += matrik[i,b];
}
T2 += matrik[i,b];
if(i==n+1)
matrik[i,n+2] = T2;
printf("%5d\n\n",matrik[i,n+2]);
}
}
Buatlah program input dengan gedit save dengan nama input misalkan
7 1 1 1
simpan di dirktori home.
lalu kita jalankan dengan program pada console sebagai berikut:
rpl110@rpl10-desktop:~$ awk -f mat.awk input
hasil dari program diatas adalah
175
30 39 48 1 10 19 28 175
38 47 7 9 18 27 29 175
46 6 8 17 26 35 37 175
5 14 16 25 34 36 45 175
13 15 24 33 42 44 4 175
21 23 32 41 43 3 12 175
22 31 40 49 2 11 20 175
175 175 175 175 175 175 175 175
untuk membuat bujursangkar 3x3
ganti input dengan 3 1 1 1 maka akan muncul di bawah ini:
15
8 1 6 15
3 5 7 15
4 9 2 15
15 15 15
now this time to celebrate......
Tugas 3: Menghitung Diskon dari Pembelian barang
Ditulis Oleh Yanuar Setiawan Selasa, 02 Juni 2009 di 21.12
Mencetak Bilangan prima dari 0-100 dengan array
Ditulis Oleh Yanuar Setiawan Jumat, 15 Mei 2009 di 04.48
Masukkan program berikut ke dalam terminal:
yanuar@yanuar-laptop:~$ awk 'BEGIN{prima[100];}{for(a=2;a<=100;a++)if(a%2!=0 && a%3!=0 && a%5!=0 && a%7!=0 && a%9!=0 || a==2 || a==3 || a==7 ) {print prima[a],a}}'
maka akan tampil di bawah ini:
2
3
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
Buatlah file dengan nama absensi:
yanuar@yanuar-desktop:~$ cat Absensi.txt
No. Nama Ming1 Ming2 Ming3 Ming4 Ming5 Ming6
1 Arwani 1 1 1 1 1 1 1 1 1 1
2 Umar 1 0 1 1 0 0 1 0 1 0
3 Dayat 0 0 1 1 0 1 1 0 1 1
4 Said 1 1 1 0 0 0 0 0 1 1
5 Rahmat 1 0 0 0 0 1 1 1 1 0
6 Mobed 1 1 0 1 0 0 1 0 1 0
7 Ojik 0 0 1 1 1 1 1 1 1 0
8. Yanuar 1 1 1 1 1 1 1 1 1 0
9. Yuda 0 1 1 1 1 1 1 1 1 1
10. Ilham 1 1 1 1 1 1 1 0 1 1
#ket 1=Hadir 0=TDK Hadir
Masukkan program ini ke terminal
yanuar@yanuar-desktop:~$ awk '{if(NR<2) a="(($3+$4+$5+$6+$7+$8+$9+$10+$11+$12)/8)*100;if(NR">1) print $0," ",a,"%" }' Absensi.txt
Tugas2: Mencetak nama file dengan urutkan file size nya pada ls-l
Ditulis Oleh Yanuar Setiawan di 04.27
Pada program di bawah ini akan mencoba untuk mengurutkan ukuran file yang berada di sort.txt
1. Pertama tampilan hasil ls-l masukkan pada sort.txt
yanuar@yanuar-laptop:~$ ls-l >> sort.txt
2. Masukkan program di bawah ini
yanuar@yanuar-laptop:~$ awk '{a=$5;print a,$1,$2,$3,$4,$5,$6,$7,$8}' sort.txt | sort --n
maka akan tampil mengurutkan file bytes dengan numeric. Fungsi ini disebut fungsi pemipaan yang berguna untuk menggabungkan fungsi satu dengan yang lain.