Dengan cekap membaca baris fail mengikut baris dalam skrip shell

Dengan cekap membaca baris fail mengikut baris dalam skrip shell

Membaca garis fail mengikut baris adalah tugas yang sama dalam banyak skrip shell, kerana ia membolehkan anda memproses setiap baris fail secara berasingan dan melakukan tindakan berdasarkan kandungan setiap baris. Terdapat beberapa cara untuk membaca baris fail mengikut baris dalam skrip shell linux, tetapi beberapa kaedah lebih cekap daripada yang lain. Dalam artikel ini, kami akan meneroka beberapa cara yang paling berkesan untuk membaca baris fail mengikut baris dalam skrip shell linux.

Menggunakan gelung semasa

Cara paling asas untuk membaca baris fail mengikut baris dalam skrip shell adalah menggunakan gelung sementara dan perintah baca. Perintah baca membaca garis input dari fail dan menyimpannya dalam pemboleh ubah, yang kemudiannya boleh diproses oleh skrip. Gelung sementara membolehkan anda meleleh melalui garisan fail sehingga hujungnya dicapai. Inilah contoh bagaimana ini dapat dilihat:

#!/usr/bin/env bash # baca baris fail demi baris semasa baca baris; lakukan # memproses kandungan baris tunggal echo "$ line" yang dilakukan < file.txt
1234567#!/usr/bin/env bash # baca baris fail oleh linewhile baca baris; lakukan # memproses kandungan baris tunggal echo "$ line" yang dilakukan < file.txt

Kaedah ini mudah dan mudah difahami, tetapi mempunyai beberapa batasan. Satu batasan ialah arahan baca hanya dapat membaca satu baris pada satu masa, jadi ia dapat lebih perlahan untuk fail besar dengan banyak baris. Di samping itu, arahan baca hanya boleh dibaca dari input standard (stdin), jadi anda mesti menggunakan < operator to redirect the contents of the file to stdin. This can be inconvenient if you need to read from multiple files or if you want to read from a file that is not in the current directory.

Menggunakan semasa gelung dengan kucing

Cara yang lebih efisien untuk membaca baris fail mengikut baris dalam skrip shell adalah menggunakan arahan kucing dalam kombinasi dengan gelung sementara. Perintah kucing membaca fail dan mengeluarkan kandungannya untuk stdout, yang kemudiannya boleh diproses oleh gelung sementara. Inilah contoh bagaimana ini dapat dilihat:

#!/usr/bin/env bash # baca baris fail demi baris semasa baca baris; lakukan # memproses kandungan baris tunggal echo "$ line" yang dilakukan < <(cat file.txt)
1234567#!/usr/bin/env bash # baca baris fail oleh linewhile baca baris; lakukan # memproses kandungan baris tunggal echo "$ line" yang dilakukan < <(cat file.txt)

Kaedah ini lebih cekap daripada arahan baca kerana ia membaca keseluruhan fail ke dalam memori sekaligus, dan bukannya membaca satu baris pada satu masa. Ini boleh lebih cepat untuk fail besar dengan banyak baris. Di samping.

Menggunakan semasa gelung dengan sed

Satu lagi cara yang cekap untuk membaca baris fail mengikut baris dalam skrip shell adalah menggunakan perintah SED dalam kombinasi dengan gelung sementara. Perintah SED adalah alat pemprosesan teks yang kuat yang dapat membaca fail dan mengeluarkan kandungannya untuk stdout, satu baris pada satu masa. Inilah contoh bagaimana ini dapat dilihat:

#!/usr/bin/env bash # baca baris fail demi baris semasa baca baris; lakukan # memproses kandungan baris tunggal echo "$ line" yang dilakukan < <(sed -n -e 1p file.txt)
1234567#!/usr/bin/env bash # baca baris fail oleh linewhile baca baris; lakukan # memproses kandungan baris tunggal echo "$ line" yang dilakukan < <(sed -n -e 1p file.txt)

Kaedah ini serupa dengan perintah kucing, tetapi ia lebih cekap kerana ia hanya mengeluarkan satu baris pada satu masa. Ini boleh lebih cepat untuk fail besar dengan banyak baris. Di samping.

Ringkasnya, terdapat beberapa cara untuk membaca baris fail mengikut baris dalam skrip shell linux.