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 $filevariabel didefinisikan setelah baris Shebang (baris pertama dalam skrip Bash), dan menyimpan jalur ke file input yang ingin Anda proses.
-rargumen ditambahkan kereadperintah mencegah interpretasi karakter yang lolos dari garis miring terbalik saat membaca konten file.
- Isi setiap baris disimpan di
$linevariabel. Dalamwhileloop, perintah echo mencetak$lineisi variabel.-eargumen memungkinkanechountuk menafsirkan karakter khusus seperti karakter baris baru\n.
- The
whileloop 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 $filevariabel menyimpan konten file input menggunakancatperintah.
forloop berulang melalui setiap bariscatoutput perintah dan mencetaknya menggunakanechoperintah 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
whileloop,IFS=argumen adalah string kosong untuk mencegah pemangkasan spasi.
-rargumen mencegah interpretasi karakter yang lolos dari garis miring terbalik.
printfperintah mencetak setiap baris file. Penentu format memperlakukan input sebagai string (%s) dan tambahkan karakter baris baru (\n) setelah setiap baris.
- Yang
herestring memberi makancatoutput perintah kereadperintah.
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
whileloop, instruksikanreadperintah untuk membaca input dari deskriptor file dengan menetapkan-uargumen dan nomor deskriptor file.
Penting: Saat menentukan deskriptor file, gunakan angka antara 4 dan 9 untuk menghindari konflik dengan deskriptor file shell internal.
printfperintah memperlakukan input$linevariabel sebagai string (%s) dan menambahkan karakter baris baru (\n) setelah mencetak$lineisinya.
9<sintaks berisi nomor deskriptor file yang sama seperti diwhilelingkaran. 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,
catfile input yang diapit dalam tanda kurung<(cat [input_file_path]untuk mengirim hasil proses kereadperintah.
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.