Kamis, 14 Mei 2009

Tugas : Membuat program prosentasi kehadiran Mahasiswa

1). Bagaimana cara membuat daftar hadir siswa? caranya sebagai berikut:
a). Buatlah sebuah file Abesnsi.txt, seperti berikut:

mobed@mobed-laptop:~$ cat Absensi.txt
No. Nama Ming1 Ming2 Ming3 Ming4 Ming5 Ming6 Ming7 Ming8
1 Andi 1 1 1 1 1 1 1 1
2 Rahmat 1 0 1 1 0 0 1 0
3 Adit 0 0 1 1 0 1 1 0
4 Dicky 1 1 1 0 0 0 0 0
5 Yanuar 1 0 0 0 0 1 1 1
6 Fina 1 1 0 1 0 0 1 0
7 Diana 0 0 1 1 1 1 1 1

b). Buatlah program awk seperti berikut:

mobed@mobed-laptop:~$ awk '{if(NR<2) print $0,"Prosentasi";a=(($3+$4+$5+$6+$7+$8+$9+$10)/8)*100;if(NR>1) print $0," ",a,"%" }' Absensi.txt
No. Nama Ming1 Ming2 Ming3 Ming4 Ming5 Ming6 Ming7 Ming8 Prosentasi
1 Andi 1 1 1 1 1 1 1 1 100 %
2 Rahmat 1 0 1 1 0 0 1 0 50 %
3 Adit 0 0 1 1 0 1 1 0 50 %
4 Dicky 1 1 1 0 0 0 0 0 37.5 %
5 Yanuar 1 0 0 0 0 1 1 1 50 %
6 Fina 1 1 0 1 0 0 1 0 50 %
7 Diana 0 0 1 1 1 1 1 1 75 %

c). Selesai, mudahkan!!!!!

Tugas: # Mencari bilangan prima dari 0-100

1). Ketikkan program berikut:
mobed@mobed-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}}'

2
3
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

2). Selesai, Selamat mencoba!!!

Tugas : -> Cara Mengurutkan Data Pada AWK

1: Bagaimana cara mengurutkan data? Untuk percobaan berikut, kita akan mencoba mengurutkan data berdasarkan jumlah kapasitas file dari yang terkecil ke yang terbesar.
Caranya adalah:
a). Misalkan kita punya data sebagai berikut:

mobed@mobed-laptop:~$ cat home.txt
total 68
-rw-r--r-- 1 mobed mobed 0 2009-04-23 10:10 aku.txt~
-rw-r--r-- 1 mobed mobed 93 2009-03-18 10:25 b~
drwxr-xr-x 2 mobed mobed 4096 2009-03-16 07:38 baackup
-rw-r--r-- 1 mobed mobed 113 2009-05-07 12:29 b.awk~
-rw-r--r-- 1 mobed mobed 0 2009-05-07 12:11 b.txt~
-rw-r--r-- 1 mobed mobed 105 2009-04-23 10:23 daftar.txt~
-rw-r--r-- 1 mobed mobed 0 2009-05-07 12:22 data.txt~
drwxr-xr-x 3 mobed mobed 4096 2009-04-07 13:01 Desktop
drwxr-xr-x 10 mobed mobed 4096 2009-03-05 22:54 Documents
lrwxrwxrwx 1 mobed mobed 26 2009-03-05 22:52 Examples -> /usr/share/example-content
-rw-r--r-- 1 mobed mobed 0 2009-05-14 00:58 home.txt
-rw-r--r-- 1 mobed mobed 0 2009-03-18 10:06 mobed~
drwxr-xr-x 2 mobed mobed 4096 2009-05-14 00:39 IPK
-rw-r--r-- 1 mobed mobed 43 2009-04-23 10:21 kamu.txt~
-rw-r--r-- 1 mobed mobed 0 2009-04-23 10:31 lain.txt~
drwxr-xr-x 2 mobed mobed 4096 2009-03-05 22:54 Music
drwxr-xr-x 2 mobed mobed 4096 2009-03-16 07:40 mydir
-rw-r--r-- 1 mobed mobed 204 2009-05-13 22:29 nilai.txt~
drwxr-xr-x 2 mobed mobed 4096 2009-03-05 22:54 Pictures
drwxr-xr-x 2 mobed mobed 4096 2009-03-05 22:59 Public
-rw-r--r-- 1 mobed mobed 567 2009-05-13 23:47 rumus2.txt~
-rw-r--r-- 1 mobed mobed 739 2009-05-14 00:18 rumus.txt~
drwxr-xr-x 2 mobed mobed 4096 2009-03-05 22:59 Templates
drwxr-xr-x 2 mobed mobed 4096 2009-03-05 22:59 Videos

b). Kemudian kita akan mengurutkan kapasitasnya(pada field tersebut kapasitas=$5), Caranya :

mobed@mobed-laptop:~$ awk '{a=$5;print a,$1,$2,$3,$4,$5,$6,$7,$8}' home.txt | sort -n
0 -rw-r--r-- 1 mobed mobed 0 2009-03-18 10:06 mobed~
0 -rw-r--r-- 1 mobed mobed 0 2009-04-23 10:10 aku.txt~
0 -rw-r--r-- 1 mobed mobed 0 2009-04-23 10:31 lain.txt~
0 -rw-r--r-- 1 mobed mobed 0 2009-05-07 12:11 b.txt~
0 -rw-r--r-- 1 mobed mobed 0 2009-05-07 12:22 data.txt~
0 -rw-r--r-- 1 mobed mobed 0 2009-05-14 00:58 home.txt
total 68
26 lrwxrwxrwx 1 mobed mobed 26 2009-03-05 22:52 Examples
43 -rw-r--r-- 1 mobed mobed 43 2009-04-23 10:21 kamu.txt~
93 -rw-r--r-- 1 mobed mobed 93 2009-03-18 10:25 b~
105 -rw-r--r-- 1 mobed mobed 105 2009-04-23 10:23 daftar.txt~
113 -rw-r--r-- 1 mobed mobed 113 2009-05-07 12:29 b.awk~
204 -rw-r--r-- 1 mobed mobed 204 2009-05-13 22:29 nilai.txt~
567 -rw-r--r-- 1 mobed mobed 567 2009-05-13 23:47 rumus2.txt~
739 -rw-r--r-- 1 mobed mobed 739 2009-05-14 00:18 rumus.txt~
4096 drwxr-xr-x 10 mobed mobed 4096 2009-03-05 22:54 Documents
4096 drwxr-xr-x 2 mobed mobed 4096 2009-03-05 22:54 Music
4096 drwxr-xr-x 2 mobed mobed 4096 2009-03-05 22:54 Pictures
4096 drwxr-xr-x 2 mobed mobed 4096 2009-03-05 22:59 Public
4096 drwxr-xr-x 2 mobed mobed 4096 2009-03-05 22:59 Templates
4096 drwxr-xr-x 2 mobed mobed 4096 2009-03-05 22:59 Videos
4096 drwxr-xr-x 2 mobed mobed 4096 2009-03-16 07:38 baackup
4096 drwxr-xr-x 2 mobed mobed 4096 2009-03-16 07:40 mydir
4096 drwxr-xr-x 2 mobed mobed 4096 2009-05-14 00:39 IPK
4096 drwxr-xr-x 3 mobed mobed 4096 2009-04-07 13:01 Desktop

c).Dari hasil tersebut, sudah tampil file/folder yang urut berdasarkan kapasitas.

Tugas :->MENCARI IPK

Misalkan ada sebuah daftar nilai seperti berikut:

No Nama MatKul SKS Tugas UTS UAS
1 Ari ArKom 2 78 78 86
2 Ari Embeded 3 81 81 87
3 Ari SSC 3 72 78 75
4 Ari PPL 3 80 77 81
5 Ari RTOS 3 76 76 81
6 Ari Mtk4 2 70 70 73
7 Ari Bing4 2 71 70 83
8 Ari PEmb1 3 80 71 87
9 Ari PSSC 3 60 67 65
10 Ari PPPL 6 77 80 86
11 Ari PRTOS 3 67 51 69

Dari data diatas apabila kita menginginkan berapa jumlah IPK nilai tersebut, maka kita bisa menggunakan cara seperti berikut:
1). Buat File data tersebut,caranya:
mobed@mobed-laptop:~$ cat 1> nilai.txt
[kemudian tulis data berikut]
No Nama MatKul SKS Tugas UTS UAS
1 Ari ArKom 2 78 78 86
2 Ari Embeded 3 81 81 87
3 Ari SSC 3 72 78 75
4 Ari PPL 3 80 77 81
5 Ari RTOS 3 76 76 81
6 Ari Mtk4 2 70 70 73
7 Ari Bing4 2 71 70 83
8 Ari PEmb1 3 80 71 87
9 Ari PSSC 3 60 67 65
10 Ari PPPL 6 77 80 86
11 Ari PRTOS 3 67 51 69
[tekan Ctrl+D untuk keluar]

Kemudian, kita coba memprogram buat rumus supaya kita tahu berapa nilai rata-ratanya, nilai angkanya, nilai hurufnya, jumlah SKSnya, jumlah IPSnya, dan jumlah IPKnya. Caranya, buat sebuah file yang berisi rumus seperti berikut:

mobed@mobed-laptop:~$ cat 1> rumus.txt
[Ketikkan program berikut]
BEGIN{
print "\n IPK MAHASISWA"
print "No Nama MatKul SKS Tugas UTS UAS Rata2 Huruf Angka"
print "------------------------------------------------------------------------------" }
{if(NR>1)
{a=($5+$6+$7)/3}
{if(a>=91&&a<=100){b="A";c=4}
if(a>=81&&a<91){b="AB";c=3.5}
if(a>=71&&a<81){b="B";c=3}
if(a>=61&&a<71){b="BC";c=2.5}
if(a>=51&&a<61){b="C";c=2}
if(a>=41&&a<51){b="D";c=1.5}
if(a>=0 &&a<41){b="E";c=1};
if(NR>1)
printf $0 "%10d %6s %8.1f\n",a,b,$4*c}
}
BEGIN{sks=0}
{sks=sks+$4}
END{print "\njumlah sks= ",sks}

BEGIN{tot=0}
{tot=tot+($4*c)}
END{print "IPS mahasiswa= ",tot}

BEGIN{IPK=0}
{IPK=tot/sks}
END{printf "IPK mahasiswa = %0.2f\n\n",IPK}
[Tekan Ctrl+D untuk keluar]

Setelah selesai lakukan pemipaan berikut.
mobed@mobed-laptop:~$ awk -f rumus.txt nilai.txt
[maka hasilnya di terminal akan seperti di bawah]

IPK MAHASISWA
No Nama MatKul SKS Tugas UTS UAS Rata2 Huruf Angka
------------------------------------------------------------------------------
1 Ari ArKom 2 78 78 86 80 B 6.0
2 Ari Embeded 3 81 81 87 83 AB 10.5
3 Ari SSC 3 72 78 75 75 B 9.0
4 Ari PPL 3 80 77 81 79 B 9.0
5 Ari RTOS 3 76 76 81 77 B 9.0
6 Ari Mtk4 2 70 70 73 71 B 6.0
7 Ari Bing4 2 71 70 83 74 B 6.0
8 Ari PEmb1 3 80 71 87 79 B 9.0
9 Ari PSSC 3 60 67 65 64 BC 7.5
10 Ari PPPL 6 77 80 86 81 AB 21.0
11 Ari PRTOS 3 67 51 69 62 BC 7.5

jumlah sks= 33
IPS mahasiswa= 100.5
IPK mahasiswa = 3.05

Selesai, akhirnya programnya sudah jadi. Selamat mencoba!!!

Tugas : -> Mencetak 10 baris terakhir dari pesan yang ada pada folder var/log

a). Untuk melakukan tugas diatas , ikutilah langkah berikut;
mobed@mobed-laptop:~$ ls -l /var/log
[program diatas akan menampilkan isi dari direktory /var/log]

b). Kemudian pipakan isi tersebut ke suatu file lagi, caranya :
mobed@mobed-laptop:~$ ls -l /var/log >> home2.txt #nama_file_terserah

c). Selanjutnya, lakukan penghitungan jumlah baris, caranya :
mobed@mobed-laptop:~$ awk '{print NR,$8 }' home2.txt
[program ini akan menghasilkan baris di setiap file. Ctt: Di laptop saya terdapat 82 baris]

d). Setelah selesai, cetak 10 baris file terakhir, caranya:

mobed@mobed-laptop:~$ awk '{a=82-10;if(NR>a)print NR,$0 }' home2.txt
73 -rw-r--r-- 1 root root 0 2009-05-13 22:16 wpa_supplicant.log
74 -rw-r--r-- 1 root root 20 2009-04-23 10:15 wpa_supplicant.log.1.gz
75 -rw-r--r-- 1 root root 20 2009-04-07 12:53 wpa_supplicant.log.2.gz
76 -rw-r--r-- 1 root root 20 2009-03-16 07:43 wpa_supplicant.log.3.gz
77 -rw-r--r-- 1 root root 20 2009-03-05 22:58 wpa_supplicant.log.4.gz
78 -rw-rw-r-- 1 root utmp 5376 2009-05-14 01:13 wtmp
79 -rw-rw-r-- 1 root utmp 58368 2009-05-13 21:59 wtmp.1
80 -rw-r--r-- 1 root root 308 2008-10-30 06:10 wvdialconf.log
81 -rw-r--r-- 1 root root 38693 2009-05-13 23:34 Xorg.0.log
82 -rw-r--r-- 1 root root 38457 2009-05-07 12:55 Xorg.0.log.old

#Selesai, mudahkan!!!!

Tugas :-> Mencetak record yang tidak mempunyai password

Caranya :

mobed@mobed-laptop:~$ awk -F: '{if (FS==":") print $1 " ",tanpa password"}' /etc/passwd
[maka terminal akan menampilkan seperti berikut]

root tanpa password
daemon tanpa password
bin tanpa password
sys tanpa password
sync tanpa password
games tanpa password
man tanpa password
lp tanpa password
mail tanpa password
news tanpa password
uucp tanpa password
proxy tanpa password
www-data tanpa password
backup tanpa password
list tanpa password
irc tanpa password
gnats tanpa password
nobody tanpa password
libuuid tanpa password
syslog tanpa password
klog tanpa password
hplip tanpa password
avahi-autoipd tanpa password
gdm tanpa password
pulse tanpa password
saned tanpa password
messagebus tanpa password
polkituser tanpa password
avahi tanpa password
haldaemon tanpa password
ilham tanpa password
clamav tanpa password

Analisa program :
FS(Field Separator) adalah sebuah pemisah antar field, disini yang kita pakai adalah ":", sehingga apabila "FS==:" maka secara otomatis program akan mencetak tanpa password setelah $1. Kemudian setelah selesai maka program akan mencari di baris berikutnya.

Mencetak hasil dari ls –l, kemudian di cari total, rata-rata ukuran file, lebih besar dan lebih kecil dari rata-rata.

Untuk bisa melakukan pekerjaan pencetakan ls -l, lakukanlah langkah berikut:
a). lihat hasil ls -l :mobed@mobed-laptop:~$ ls -l
total 72
-rw-r--r-- 1 mobed mobed 0 2009-04-23 10:10 aku.txt~
-rw-r--r-- 1 mobed mobed 93 2009-03-18 10:25 b~
drwxr-xr-x 2 mobed mobed 4096 2009-03-16 07:38 baackup
-rw-r--r-- 1 mobed mobed 113 2009-05-07 12:29 b.awk~
-rw-r--r-- 1 mobed mobed 0 2009-05-07 12:11 b.txt~
-rw-r--r-- 1 mobed mobed 105 2009-04-23 10:23 daftar.txt~
-rw-r--r-- 1 mobed mobed 0 2009-05-07 12:22 data.txt~
drwxr-xr-x 3 mobed mobed 4096 2009-04-07 13:01 Desktop
drwxr-xr-x 10 mobed mobed 4096 2009-03-05 22:54 Documents
lrwxrwxrwx 1 mobed mobed 26 2009-03-05 22:52 Examples -> /usr/share/example-content
-rw-r--r-- 1 mobed mobed 1393 2009-05-14 00:58 home.txt
-rw-r--r-- 1 mobed mobed 0 2009-03-18 10:06 mobed~
drwxr-xr-x 2 mobed mobed 4096 2009-05-14 00:39 IPK
-rw-r--r-- 1 mobed mobed 43 2009-04-23 10:21 kamu.txt~
-rw-r--r-- 1 mobed mobed 0 2009-04-23 10:31 lain.txt~
drwxr-xr-x 2 mobed mobed 4096 2009-03-05 22:54 Music
drwxr-xr-x 2 mobed mobed 4096 2009-03-16 07:40 mydir
-rw-r--r-- 1 mobed mobed 204 2009-05-13 22:29 nilai.txt~
drwxr-xr-x 2 mobed mobed 4096 2009-03-05 22:54 Pictures
drwxr-xr-x 2 mobed mobed 4096 2009-03-05 22:59 Public
-rw-r--r-- 1 mobed mobed 567 2009-05-13 23:47 rumus2.txt~
-rw-r--r-- 1 mobed mobed 739 2009-05-14 00:18 rumus.txt~
drwxr-xr-x 2 mobed mobed 4096 2009-03-05 22:59 Templates
drwxr-xr-x 2 mobed mobed 4096 2009-03-05 22:59 Videos

b). Kemudian pipakan hasil tersebut menjadi suatu file, caranya:
mobed@mobed-laptop:~$ ls -l >> home.txt #nama_file terserah

c). Pada isi ls -l tersebut jumlah kapasitas file/folder terletak pada kolom 5 yang berarti bahwa $5 adalah kapasitasnya.
Sehingga untuk mencari total kapasitas tersebut caranya adalah sebagai berikut:

mobed@mobed-laptop:~$ awk 'BEGIN{tot=0}{tot=tot+$5}END{ print tot}' home.txt 42850 #42850=jumlah total kapasitas pada ls -l

d). Selanjutnya adalah mencari rata-rata, sebelumnya kita harus mencari jumlah file/folder dalam ls -l, caranya seperti berikut :

mobed@mobed-laptop:~$ awk '{print NR }' home.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

Pada hasil diatas diketahui bahwa jumlah file adalah 25, sehingga rata-ratanya adalah :
mobed@mobed-laptop:~$ awk 'BEGIN{tot=0}{tot=tot+$5}END{ print tot/25}' home.txt 1714 #totalnya= 1714

e). Untuk mencari nilai kapasitas file yang lebih kecil dari rata-rata adalah sebagai berikut :
mobed@mobed-laptop:~$ awk '{if($5<1714) print $8}' home.txt
aku.txt~
b~
b.awk~
b.txt~
daftar.txt~
data.txt~
Examples
home.txt
mobed~
kamu.txt~
lain.txt~
nilai.txt~
rumus2.txt~
rumus.txt~

Pada program diatas akan menampilkan semua file yang kapasitasnya kurang dari 1714

f). Untuk mencari kapasitas file yang lebih besar dari rata-rata adalah sebagai berikut :
mobed@mobed-laptop:~$ awk '{if($5>1714) print $8}' home.txt
baackup
Desktop
Documents
IPK
Music
mydir
Pictures
Public
Templates
Videos

#Selesai, selamat mencoba!!!