GNU/Linux >> Belajar Linux >  >> Linux

Cara Membaca File Baris demi Baris di Bash

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 ke read perintah mencegah interpretasi karakter yang lolos dari garis miring terbalik saat membaca konten file.
  • Isi setiap baris disimpan di $line variabel. Dalam while loop, perintah echo mencetak $line isi variabel. -e argumen memungkinkan echo 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 menggunakan cat perintah.
  • for loop berulang melalui setiap baris cat output perintah dan mencetaknya menggunakan echo 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 makan cat output perintah ke read 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, instruksikan read 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 di while 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 ke read 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.


Linux
  1. Kotak Sibuk Membaca File Baris demi Baris?

  2. Di Bash, bagaimana cara menambahkan string setelah setiap baris dalam file?

  3. Bagaimana cara mengurai file CSV di Bash?

  1. Cara Menghapus File dan Direktori di Linux dari Command Line

  2. Bagaimana cara membaca baris kedua hingga terakhir dalam file menggunakan Bash?

  3. Bagaimana cara membaca baris terakhir file teks menjadi variabel menggunakan Bash?

  1. Cara Menambahkan Nomor Baris Ke File Teks Di Linux

  2. Cara Memisahkan Dan Menggabungkan File Dari Baris Perintah Di Linux

  3. Baca baris demi baris dalam skrip bash