GNU/Linux >> Belajar Linux >  >> Linux

Kotak Sibuk Membaca File Baris demi Baris?

Tidak ada applet baca yang datang dengan kotak sibuk.

Apakah ada cara untuk membaca file txt baris demi baris menggunakan busybox?

Yang saya miliki sekarang adalah

while read line
do
     echo $line
done < "$InputFile"

Jawaban yang Diterima:

read adalah shell builtin (tidak dapat mengatur variabel shell jika tidak).

Jadi, jika busybox Anda sh didasarkan pada ash , ini:

while IFS= read -r line <&3; do
  printf '%sn' "$line"
done 3< "$InputFile"

Seperti di shell POSIX mana pun. Tetapi seperti halnya shell apa pun, menggunakan while read loop untuk memproses teks umumnya merupakan praktik skrip shell yang buruk.

Di atas, Anda membutuhkan:

  • IFS= jika tidak, spasi dan tab awal dan akhir yang tidak lolos akan dihapus dari garis
  • -r , jika tidak, garis miring terbalik diperlakukan sebagai karakter escape dan dihapus (kecuali jika diloloskan)
  • printf , bukan echo yang tidak akan berfungsi untuk baris yang misalnya -nene
  • "$line" dikutip (bukan $line ) jika tidak, konten baris akan dibagi menjadi spasi dan tab, dan pola globbing diperluas.
  • <&3 dan 3< ... , jika Anda memerlukan akses ke stdin asli dalam loop.

Jika file berisi karakter setelah baris terakhir dan Anda ingin menampilkannya, Anda dapat menambahkannya setelah loop:

[ -z "$line" ] || printf %s "$line"

Perhatikan bahwa loop tersebut tidak dapat menangani data biner (NUL karakter).


Linux
  1. Memahami "jika =Baca -r Baris"?

  2. Apakah Tail Membaca Seluruh File?

  3. Tidak Dapat Menemukan File Untuk Ditambal Pada Baris Input 3?

  1. Izin File di Linux – Baca/Tulis/Jalankan

  2. VIM:cara menuju ke baris yang tepat di Ubuntu

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

  1. Mengapa pilih digunakan di Linux

  2. tambahkan baris ke file HANYA jika belum ada dalam file

  3. Nonblocking Dapatkan Karakter