Bash Scripting #6: Mengolah Teks dengan sed dan awk
Table of Contents
Pendahuluan
Setelah belajar Fungsi Rekursif dan Pengolahan File dalam Bash, kini saatnya mendalami pengolahan teks menggunakan sed
dan awk
.
🔹 sed
(Stream Editor) digunakan untuk mencari, mengganti, dan mengedit teks dalam file.
🔹 awk
adalah alat yang lebih kompleks untuk memproses teks berbasis pola dan kolom.
Keduanya sangat berguna dalam manipulasi teks otomatis seperti mengganti kata dalam file konfigurasi, mengekstrak data dari log, atau menganalisis output perintah Bash. 🚀
1️⃣ Menggunakan sed
untuk Manipulasi Teks
Mengganti Kata dalam File
Format dasar:
sed 's/kata_lama/kata_baru/g' file.txt
s
= Substitusi (replace).g
= Global, mengganti semua kemunculan dalam satu baris.
Contoh: Mengganti Kata dalam File
Misalnya, kita punya data.txt
:
Halo dunia, belajar Bash scripting itu seru!
Halo dunia, ini contoh `sed`.
Gunakan perintah ini untuk mengganti "Halo dunia"
menjadi "Hi semua"
:
sed 's/Halo dunia/Hi semua/g' data.txt
💡 Output:
Hi semua, belajar Bash scripting itu seru!
Hi semua, ini contoh `sed`.
📌 Penjelasan:
s/Halo dunia/Hi semua/g
→ Mengganti"Halo dunia"
dengan"Hi semua"
di seluruh file.
Menghapus Baris yang Mengandung Kata Tertentu
Gunakan perintah berikut untuk menghapus semua baris yang mengandung kata "hapus"
:
sed '/hapus/d' file.txt
💡 d
(delete) akan menghapus baris yang mengandung pola tersebut.
Menghapus Spasi Berlebih di dalam Teks
sed 's/ */ /g' file.txt
📌 Penjelasan:
s/ */ /g
mengganti dua atau lebih spasi dengan satu spasi.
2️⃣ Menggunakan awk
untuk Pemrosesan Data
awk
lebih fleksibel dalam menangani data berbasis kolom, seperti CSV atau log sistem.
Menampilkan Kolom Tertentu dari File
Misalnya, kita punya file user_data.txt
:
1 Budi 25
2 Siti 30
3 Andi 28
Perintah berikut akan menampilkan hanya kolom nama (kolom ke-2):
awk '{print $2}' user_data.txt
💡 Output:
Budi
Siti
Andi
📌 Penjelasan:
$1
= Kolom pertama,$2
= Kolom kedua,$3
= Kolom ketiga, dst.print $2
mencetak hanya kolom ke-2 (nama pengguna).
Mencari Data Berdasarkan Kondisi
Menampilkan hanya pengguna berusia di atas 27 tahun:
awk '$3 > 27 {print $2, "berusia", $3}' user_data.txt
💡 Output:
Siti berusia 30
Andi berusia 28
📌 Penjelasan:
$3 > 27
→ Memfilter hanya baris dengan usia lebih dari 27.{print $2, "berusia", $3}
→ Mencetak nama + usia dalam format lebih jelas.
Menghitung Total Data dalam File
Menampilkan jumlah total baris dalam file:
awk 'END {print "Total data:", NR}' user_data.txt
💡 Output:
Total data: 3
📌 Penjelasan:
NR
adalah jumlah baris dalam file.END {print "Total data:", NR}
mencetak total jumlah baris setelah file selesai diproses.
3️⃣ Studi Kasus: Mengedit Log Sistem dengan sed
dan awk
Misalnya kita punya log di access.log
:
192.168.1.1 - - [10/Feb/2025] "GET /index.html"
192.168.1.2 - - [10/Feb/2025] "POST /login"
192.168.1.3 - - [10/Feb/2025] "GET /dashboard"
Tugas kita:
✅ Mengambil IP address saja.
✅ Mengganti GET
menjadi AKSES
, dan POST
menjadi KIRIM
.
1. Menampilkan Hanya IP Address dengan awk
awk '{print $1}' access.log
💡 Output:
192.168.1.1
192.168.1.2
192.168.1.3
📌 Penjelasan:
$1
adalah kolom pertama, yang berisi IP Address.
2. Mengganti GET
dan POST
dengan sed
sed -e 's/GET/AKSES/g' -e 's/POST/KIRIM/g' access.log
💡 Output:
192.168.1.1 - - [10/Feb/2025] "AKSES /index.html"
192.168.1.2 - - [10/Feb/2025] "KIRIM /login"
192.168.1.3 - - [10/Feb/2025] "AKSES /dashboard"
📌 Penjelasan:
-e 's/GET/AKSES/g'
→ Mengubah"GET"
menjadi"AKSES"
.-e 's/POST/KIRIM/g'
→ Mengubah"POST"
menjadi"KIRIM"
.
Kesimpulan & Tantangan untuk Kamu!
Sekarang kamu sudah belajar:
✅ Mengedit teks dengan sed
(mengganti kata, menghapus baris, membersihkan spasi).
✅ Memfilter dan menampilkan data dengan awk
(memilih kolom, mencari berdasarkan kondisi, menghitung total).
✅ Studi kasus pengolahan log sistem dengan sed
dan awk
.
🔥 Tantangan:
- Buat skrip Bash yang membaca file
data.csv
dan menampilkan hanya kolom kedua menggunakanawk
. - Ganti semua kemunculan kata
"ERROR"
dalamlog.txt
menjadi"PERINGATAN"
menggunakansed
.
Bagikan kodenya di komentar! 😉
Di artikel berikutnya, kita akan membahas penggunaan grep
dan cut
untuk pencarian teks lanjutan dalam Bash scripting. Stay tuned! 🚀