GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Melewati Garis File?

Katakanlah saya memiliki file ini:

hello
world
hello world

Program ini

#!/bin/bash

for i in $(cat $1); do
    echo "tester: $i"
done

keluaran

tester: hello
tester: world
tester: hello
tester: world

Saya ingin memiliki for ulangi setiap baris secara individual dengan mengabaikan spasi putih, yaitu dua baris terakhir harus diganti dengan

tester: hello world

Menggunakan tanda kutip for i in "$(cat $1)"; menghasilkan i ditugaskan seluruh file sekaligus. Apa yang harus saya ubah?

Jawaban yang Diterima:

(9 tahun kemudian:)
Kedua jawaban yang diberikan akan gagal pada file tanpa baris baru di akhir, ini akan secara efektif melewati baris terakhir, tidak menghasilkan kesalahan, akan menyebabkan bencana (belajar dengan cara yang sulit:).

Solusi ringkas terbaik yang saya temukan sejauh ini bahwa "Hanya Bekerja" (dalam bash dan sh):

while IFS='' read -r LINE || [ -n "${LINE}" ]; do
    echo "processing line: ${LINE}"
done < /path/to/input/file.txt

Untuk diskusi lebih mendalam, lihat diskusi StackOverflow ini:Bagaimana cara menggunakan "sambil membaca" (Bash) untuk membaca baris terakhir dalam file jika tidak ada baris baru di akhir file?

Hati-hati:pendekatan ini menambahkan baris baru tambahan ke baris terakhir jika belum ada.


Linux
  1. Bagaimana Cara Menyisipkan Teks Sebelum Baris Pertama Sebuah File?

  2. Bagaimana Menghitung Jumlah Baris Dalam File Setelah Pertandingan Grep?

  3. Cara Menampilkan Baris Tertentu dari File di Baris Perintah Linux

  1. Cara Menghitung baris dalam file di UNIX/Linux

  2. Cara menggunakan sed untuk menghapus n baris terakhir dari sebuah file

  3. Bagaimana saya bisa menambahkan string ke awal setiap baris dalam sebuah file?

  1. Cara hanya mendapatkan jumlah baris file

  2. Bagaimana cara menghapus konten file dari baris perintah?

  3. Bagaimana cara mencetak baris terakhir dari file terkompresi gz di baris perintah?