Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Bash Lanjutan

Pelajaran 8 dari 15

Mengolah teks: ekspansi parameter, sed, dan awk

Misi: laporan penjualan harian

Setelah pelajaran ini kamu bisa membersihkan berkas CSV dengan sed, menghitung omzet per cabang dengan awk dan argumen skrip, serta mengurutkan baris data dengan sort.

±17 menitDiperiksa 5 Okt 2026

Materi

Toko Sinar Jaya punya tiga cabang yang mengirim data penjualan ke satu berkas. Kasirnya menulis nama cabang dengan huruf yang tidak seragam (medan, MEDAN, Medan) dan tanggal dalam bentuk hari/bulan/tahun. Manajer ingin berkas yang rapi, omzet per cabang, dan daftar transaksi yang diurutkan berdasarkan jumlah unit.

Empat latihan berikut membangunnya. Lulus misi ini bila minimal 80 persen latihannya benar.

Urutannya penting: bersihkan dulu, baru hitung. awk membandingkan teks persis, jadi $2 == "Medan" tidak cocok dengan baris medan atau MEDAN; total yang dihitung dari data mentah akan kurang tanpa pesan galat apa pun. sed dengan flag I menyeragamkan nama cabang, dan sed -E dengan tiga grup membalik tanggal menjadi tahun-bulan-hari, bentuk yang urut abjadnya sama dengan urut waktunya.

Omzet adalah jumlah unit dikali harga, dihitung per baris lalu dijumlahkan: s += $4 * $5. Nama cabang diterima skrip sebagai argumen dan diteruskan ke awk dengan -v, sehingga satu skrip melayani semua cabang. Untuk mengurutkan, sort -t, -k4 -nr membaca kolom keempat sebagai angka dari yang terbesar; baris judul dibuang dulu dengan sed '1d' supaya tidak ikut diurutkan.

Latihan

0/4 lulus

Misi akhir modul: luluskan minimal 4 dari 4 tugas. Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 4 dari 4

Berkas harga.txt berisi satu baris: Rp 72.000 + Rp 17.500. Apa yang dicetak perintah berikut?

sed 's/Rp /Rp/' harga.txt
Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke

Tampilkan 1 lagi