Hal ini disebabkan karena ukuran data yang dihadapi sangat besar dengan jumlah baris dapat mencapai ribuan dan serta jumlah kolom mencapai jutaan.
Tentu saja data ini tidak bisa diatasi dengan software komersial seperti Microsoft Excell.
Pada bagian ini saya akan menjelaskan bagaimana memanipulasi sebuah file ASCII dengan AWK.
input.txt
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1. output yang diharapkan tersususun atas kolom 2 kolom 2 dan kolom 3
awk '{print $2,$2,$3} ' input.txt > output.txt
more output.txt
2 2 3
2 2 3
2 2 3
2 2 3
2. output yang diharapkan harus memiliki ketelitian. Kolom 1 adalah integer, kolom 2 dan 3 ketelitian 2 di belakang koma.
awk '{printf "%.1d %.2f %.2f\n ",$2,$2,$3} ' input.txt > output.txt
more output.txt
2 2.00 3.00
2 2.00 3.00
2 2.00 3.00
2 2.00 3.00
3. Operasi matematika antara kolom 2 dengan sebuah angka, dalam hal ini adalah perkalian (*)
awk '{printf "%.1d %.2f %.2f\n ",$2,$2*100,$3} ' input.txt > output.txt
more output.txt
2 200.00 3.00
2 200.00 3.00
2 200.00 3.00
2 200.00 3.00
4. Operasi matematika antar kolom. Dalam hal ini, setiap elemen di kolom 2 dibagi elemen kolom 3
awk '{printf "%.1d %.2f %.2f\n ",$2,$2/$3,$3} ' input.txt > output.txt
more output.txt
2 0.67 3.00
2 0.67 3.00
2 0.67 3.00
2 0.67 3.00
5. Output tersusun dari baris 3 sampai baris 5
more input.txt
2.3 3.2 3.6
4.2 1.3 6.5
5.1 4.2 9.3
4.8 6.4 1.2
6.1 2.4 5.3
8.8 8.4 6.1
8.1 0.6 8.7
awk '(NR>2 && NR<6) {print $0} ' input.txt > output.txt
more output.txt
5.1 4.2 9.3
4.8 6.4 1.2
6.1 2.4 5.3
6. Memilih baris ganjil
awk 'NR%2 ' input.txt > output.txt
more output.txt
2.3 3.2 3.6
5.1 4.2 9.3
6.1 2.4 5.3
8.1 0.6 8.7
7. Memilih baris genap
awk '(NR+1)%2 ' input.txt > output.txt
more output.txt
4.2 1.3 6.5
4.8 6.4 1.2
8.8 8.4 6.1
8. Membalikkan susunan baris:
awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] } ' input.txt > output.txt
more input.txt
2.3 3.2 3.6
4.2 1.3 6.5
5.1 4.2 9.3
4.8 6.4 1.2
6.1 2.4 5.3
8.8 8.4 6.1
8.1 0.6 8.7
more output.txt
8.1 0.6 8.7
8.8 8.4 6.1
6.1 2.4 5.3
4.8 6.4 1.2
5.1 4.2 9.3
4.2 1.3 6.5
2.3 3.2 3.6
9. Output diprint jika kolom 3 pada input lebih besar dari kolom 2
awk '$3 > $2 ' input.txt > output.txt
more output.txt
2.3 3.2 3.6
4.2 1.3 6.5
5.1 4.2 9.3
6.1 2.4 5.3
8.1 0.6 8.7
10. Menjumlahkan nilai-nilai pada setiap kolom
awk '{s=0; for (i=1; i<=NF; i++) s=s+$i; print s} ' input.txt > output.txt
11. Menjumlahkan semua nilai yang ada pada file
awk '{for (i=1; i<=NF; i++) s=s+$i}; END{print s} ' input.txt
12. Print sampai baris ke 2
awk 'NR < 3 ' input.txt
simpan hasil output.txt
awk 'NR < 3 ' input.txt > output.txt
13. Output baris ke 5
awk 'NR==5 ' input.txt
awk 'NR==5 {print;exit} ' input.txt # lebih efisien untuk file yang besar
more input.txt
1Ini adalah header
2Ini adalah header
3Ini adalah header
4.2x1.3Wx1.8wddwd
5.3x4.24x4.1hywkw
6.7x1.2Rx1.6wdwd
12345678901234567
more output.txt
4.2 1.3 1.8
5.3 4.2 4.1
6.7 1.2 1.6
awk 'BEGIN{FIELDWIDTHS="3 1 3 2 3"} NR>3 && NR<7 {print $1,$3,$5}' input.txt > output.txt
FIELDWIDTHS="3 1 3 2 3" menunjukkan:
kolom 1: 3 karakter pertama (karakter 1-3)
kolom 2: 1 karakter berikutnya(karakter ke 4)
kolom 3: 3 karakter berikutnya(karakter 5-7)
...dst
NR>3 && NR<7 menunjukkan hanya meng-outputkan baris ke 4 sampai 6
{print $1,$3,$5} menunjukkan hanya print kolom 1, 3 dan 5
No comments:
Post a Comment