Android

Cara membaca file baris demi baris di bash

Tutorial menggunakan perintah dasar untuk membuka file (CentOS Bash Linux)

Tutorial menggunakan perintah dasar untuk membuka file (CentOS Bash Linux)

Daftar Isi:

Anonim

Saat menulis skrip Bash, kadang-kadang Anda akan menemukan diri Anda dalam situasi di mana Anda perlu membaca file baris demi baris. Misalnya, Anda mungkin memiliki file teks yang berisi data yang harus diproses oleh skrip.

Dalam tutorial ini, kita akan membahas cara membaca file baris demi baris di Bash.

Membaca File Baris Dengan Sintaks Baris

Sintaks yang paling umum untuk membaca file baris demi baris adalah sebagai berikut:

while IFS= read -r line do echo "$line" done < input_file

atau versi single-line yang setara:

while IFS= read -r line; do echo $line; done < input_file

Bagaimana cara kerjanya?

File input ( input_file ) adalah nama file yang ingin Anda buka untuk dibaca oleh perintah read . Perintah read membaca file baris demi baris, menugaskan setiap baris ke variabel line . Setelah semua baris diproses, loop sementara akan berakhir. Pemisah bidang internal ( IFS ) diatur ke string nol untuk mempertahankan spasi spasi awal dan akhir yang merupakan perilaku default dari perintah read .

Membaca File Contoh Baris demi Baris

Mari kita lihat contoh berikut ini. Misalkan, kami memiliki file bernama distros.txt berisi daftar beberapa distribusi Linux paling populer dan manajer paket mereka dipisahkan dengan koma ( , ):

distros.txt

Ubuntu, apt Debian, apt CentOS, yum Arch Linux, pacman Fedora, dnf

Untuk membaca file baris demi baris Anda akan menjalankan kode berikut di terminal Anda:

while IFS= read -r line do echo "$line" done < distros.txt

Kode akan membaca file per baris, menetapkan setiap baris ke suatu variabel, dan menggemakan variabel. Dasarnya Anda akan melihat output yang sama seolah-olah Anda akan menampilkan konten file menggunakan perintah cat.

Bagaimana jika Anda ingin mencetak hanya distribusi yang menggunakan apt? Salah satu caranya adalah dengan menggunakan pernyataan if dan memeriksa apakah baris tersebut berisi substring apt:

while IFS= read -r line do if]; then echo "$line" fi done < distros.txt

Ubuntu, apt Debian, apt

Saat membaca file baris demi baris, Anda juga dapat melewatkan lebih dari satu variabel ke perintah baca yang akan membagi baris menjadi bidang berdasarkan IFS . Bidang pertama ditugaskan ke variabel pertama, variabel kedua hingga variabel kedua, dan seterusnya. Jika ada lebih banyak bidang daripada variabel, bidang sisa ditugaskan ke variabel terakhir.

Dalam contoh berikut, kami menetapkan IFS ke koma ( , ) dan meneruskan dua variabel distro dan pm ke perintah baca. Segala sesuatu dari awal baris hingga koma pertama akan ditugaskan ke variabel pertama ( distro ) dan sisa baris akan ditugaskan ke variabel kedua ( pm ):

while IFS=, read -r distro pm do echo "$pm" is the package manager for "$distro" done < distros.txt

apt is the package manager for Ubuntu apt is the package manager for Debian yum is the package manager for CentOS pacman is the package manager for Arch Linux dnf is the package manager for Fedora

Metode Membaca File Alternatif

Menggunakan Substitusi Proses

Substitusi proses memungkinkan Anda untuk melewatkan output dari perintah sebagai nama file:

while IFS= read -r line do echo "$line" done < <(cat input_file)

Menggunakan String Di Sini

String di sini adalah varian dari dokumen Here. String (cat input_file) akan menjaga baris baru:

while IFS= read -r line do echo "$line" done <<< $(cat input_file)

Menggunakan deskriptor File

Anda juga dapat memberikan input ke loop menggunakan deskriptor file:

while IFS= read -r -u9 line do echo "$line" done 9< input_file

Ketika bekerja dengan deskriptor file, gunakan angka antara 4 dan 9 untuk menghindari konflik dengan deskriptor file internal shell.

Kesimpulan

Di Bash, kita bisa membaca file baris demi baris dengan memberikan nama file sebagai input untuk loop baca sementara.

terminal bash