Pendahuluan
Membaca file baris demi baris memungkinkan Anda memproses konten file secara efektif dan menampilkan setiap baris sebagai elemen dalam daftar. Setelah menampilkan setiap baris secara terpisah, cari atau cocokkan konten tertentu dengan mudah.
Salah satu cara untuk membaca file teks dalam baris individual adalah dengan menggunakan shell Bash.
Dalam tutorial ini, Anda akan belajar membaca file baris demi baris di Bash.
Prasyarat
- Sistem yang menjalankan Linux.
- Akses ke terminal (Ctrl + Alt + B ).
- Editor teks (seperti Nano atau vi/vim).
Membaca Baris demi Baris di Bash
Ada beberapa metode untuk membaca file baris demi baris menggunakan Bash. Bagian berikut menyoroti lima metode untuk memproses file satu per satu menggunakan Bash.
Metode 1:Menggunakan Perintah Baca dan Perulangan Sementara
Metode pertama adalah dengan menggunakan perintah baca dan while
loop dalam skrip Bash. Meskipun dimungkinkan untuk melakukan hal yang sama di terminal, skrip Bash menyimpan kode dan membuatnya dapat digunakan kembali. Ikuti langkah-langkah di bawah ini:
1. Buka terminal (Ctrl + Alt + B ) dan buat skrip Bash baru menggunakan editor teks seperti vi/vim:
vi line.sh
2. Masukkan baris berikut:
#!/bin/bash
file="days.txt"
while read -r line; do
echo -e "$line\n"
done <$file
$file
variabel didefinisikan setelah baris Shebang (baris pertama dalam skrip Bash), dan menyimpan jalur ke file input yang ingin Anda proses.
-r
argumen ditambahkan keread
perintah mencegah interpretasi karakter yang lolos dari garis miring terbalik saat membaca konten file.
- Isi setiap baris disimpan di
$line
variabel. Dalamwhile
loop, perintah echo mencetak$line
isi variabel.-e
argumen memungkinkanecho
untuk menafsirkan karakter khusus seperti karakter baris baru\n
.
- The
while
loop berlanjut hingga mencapai akhir file dan loop berakhir.
3. Simpan skrip dan keluar vi:
:wq
4. Jalankan skrip:
bash line.sh
Script mengeluarkan setiap baris dari file teks contoh secara terpisah.
Metode 2:Menggunakan Perintah cat dan untuk Loop
Metode lain untuk menampilkan konten file dalam baris individual adalah dengan menggunakan perintah cat dan for
lingkaran. for
loop memungkinkan echo
untuk mencetak baris dari cat
perintah output hingga mencapai akhir file.
Ikuti langkah-langkah di bawah ini:
1. Buat skrip baru:
vi readfile.sh
2. Masukkan baris berikut:
#!/bin/bash
file=$(cat days.txt)
for line in $file
do
echo -e "$line\n"
done
$file
variabel menyimpan konten file input menggunakancat
perintah.
for
loop berulang melalui setiap bariscat
output perintah dan mencetaknya menggunakanecho
perintah hingga mencapai akhir file.
3. Simpan skrip dan keluar vi:
:wq
4. Jalankan skrip:
bash readfile.sh
Script mengeluarkan isi file baris demi baris dalam keluaran standar.
Metode 3:Menggunakan String di sini
Metode lain untuk mencetak konten file baris demi baris adalah dengan menggunakan here
string untuk memasukkan konten file ke read
memerintah. here
string menghubungkan konten variabel, string, atau file yang ditentukan setelah <<<
sintaks ke input standar dari program yang dipanggil.
Ikuti langkah-langkah di bawah ini:
1. Buat skrip Bash baru:
vi herestrings.sh
2. Masukkan baris berikut:
#!/bin/bash
while IFS= read -r line; do
printf '%s\n' "$line"
done <<< $(cat days.txt )
- Dalam
while
loop,IFS=
argumen adalah string kosong untuk mencegah pemangkasan spasi.
-r
argumen mencegah interpretasi karakter yang lolos dari garis miring terbalik.
printf
perintah mencetak setiap baris file. Penentu format memperlakukan input sebagai string (%s
) dan tambahkan karakter baris baru (\n
) setelah setiap baris.
- Yang
here
string memberi makancat
output perintah keread
perintah.
3. Simpan skrip dan keluar dari editor:
:wq
4. Jalankan skrip:
bash herestrings.sh
Output mencetak isi file baris demi baris.
Metode 4:Menggunakan Deskriptor File
Deskriptor file mengacu pada file atau proses yang terbuka. Setiap proses memiliki tiga deskriptor file default:
0
. Masukan standar.1
. Keluaran standar.2
. Kesalahan standar.
Berikan masukan untuk read
perintah menggunakan deskriptor file dan menampilkan setiap baris dari konten file secara terpisah. Ikuti langkah-langkah di bawah ini:
1. Buat skrip bash baru:
vi descriptors.sh
2. Masukkan baris berikut:
#!/bin/bash
while IFS= read -r -u9 line; do
printf '%s\n' "$line"
done 9< days.txt
- Dalam
while
loop, instruksikanread
perintah untuk membaca input dari deskriptor file dengan menetapkan-u
argumen dan nomor deskriptor file.
Penting: Saat menentukan deskriptor file, gunakan angka antara 4 dan 9 untuk menghindari konflik dengan deskriptor file shell internal.
printf
perintah memperlakukan input$line
variabel sebagai string (%s
) dan menambahkan karakter baris baru (\n
) setelah mencetak$line
isinya.
9<
sintaks berisi nomor deskriptor file yang sama seperti diwhile
lingkaran. Isi file input dikirim ke deskriptor file yang ditentukan.
3. Simpan skrip:
:wq
4. Jalankan skrip untuk menguji kode:
bash descriptors.sh
Keluaran skrip mencetak setiap baris file secara terpisah.
Metode 5:Menggunakan Substitusi Proses
Substitusi proses memungkinkan output standar dari suatu proses (atau proses) muncul sebagai file, dan memasukkannya ke dalam input standar proses lain. Gunakan substitusi proses untuk menyediakan file input dan mencetak setiap baris file secara terpisah.
Ikuti langkah-langkah di bawah ini:
1. Buat skrip Bash:
vi substitution.sh
2. Masukkan baris berikut:
#!/bin/bash
while IFS= read -r line; do
printf '%s\n' "$line"
done < <(cat days.txt)
- Setelah menutup loop,
cat
file input yang diapit dalam tanda kurung<(cat [input_file_path]
untuk mengirim hasil proses keread
perintah.
Penting: Perhatikan untuk tidak menambahkan karakter spasi di antara <
karakter dan tanda kurung kiri (
. Menggunakan karakter spasi putih mengartikan kode sebagai pengalihan dan menghasilkan kesalahan.
3. Simpan skrip:
:wq
4. Jalankan skrip:
bash substitution.sh
Setiap baris file dicetak secara terpisah dalam output standar.