Panduan Linux

Membaca dan Memproses File Line-by-Line dengan Bash

Halo teman-teman! Kali ini kita akan membahas cara membaca dan memproses file baris per baris (line-by-line) di Bash. Ini adalah salah satu cara paling umum dan efisien untuk memproses teks dalam skrip shell. Yuk, kita simak!

Kenapa Harus Line-by-Line?

  1. Hemat Memori: Kita tidak perlu membuka seluruh file ke memori.
  2. Fleksibel: Bisa memproses file besar tanpa khawatir kekurangan memori.
  3. Simpel: Kodenya gampang banget, cuman pake while loop.

Contoh Sederhana

Misalkan kita punya file data.txt dengan isi:

Halo
Dunia
Bash

Kita bisa membaca dan mencetak setiap baris dengan kode berikut:

#!/bin/bash
while IFS= read -r line
do
  echo "$line"
done < "data.txt"

Penjelasan Kode

  1. while IFS= read -r line: Ini adalah while loop dengan perintah read. IFS= berarti Input Field Separator dibuat kosong, sehingga spasi di awal dan akhir baris tidak dihilangkan. -r mencegah backslash (\) diinterpretasikan secara khusus.

  2. do dan done adalah blok kode yang akan dijalankan untuk setiap baris. Di sini, kita hanya mencetak baris dengan echo "$line".

  3. < "data.txt": Mengarahkan isi file data.txt ke while loop.

Contoh Lebih Kompleks

Misalkan kita mau menghitung total kata di setiap baris:

#!/bin/bash
while IFS= read -r line
do
  words=( $line )
  echo "Baris: $line | Jumlah Kata: ${#words[@]}"
done < "data.txt"

Penjelasan Kode

  1. words=( $line ): Mengkonversi $line ke array words. Setiap kata menjadi elemen array.

  2. ${#words[@]}: Mengembalikan jumlah elemen dalam array words, yaitu jumlah kata di baris tersebut.

Tips Tambahan

  1. Handle File Besar: Gak usah khawatir, cara ini bisa buat file besar karena gak perlu buka seluruh file di memori.

  2. Proses dengan Command Lain: Kamu bisa memasukkan perintah lain di dalam loop, seperti grep, awk, atau sed.

  3. Skip Baris Tertentu: Tambahkan kondisi if di dalam loop untuk skip baris tertentu.

while IFS= read -r line
do
  if [[ $line == *"skip"* ]]; then
    continue
  fi
  echo "$line"
done < "file.txt"

Di sini, kita skip baris yang mengandung kata “skip”.

Membaca file line-by-line di Bash itu gampang dan bermanfaat banget, apalagi kalau berurusan dengan file besar atau proses teks sederhana. Coba pake contoh di atas, dan jangan ragu buat modifikasi sesuai kebutuhan.

Semoga bermanfaat! Kalau ada pertanyaan, tulis aja di komentar. Ciao!

#Bash Script #Linux