Gelung melalui kandungan fail di bash

Gelung melalui kandungan fail di bash

Bash, shell bourne-again, adalah shell baris komando yang popular dan bahasa skrip yang digunakan secara meluas untuk kesederhanaan dan kemudahan penggunaannya. Salah satu tugas yang paling biasa yang mungkin perlu dilakukan menggunakan bash adalah melengkung melalui kandungan fail.

Dalam artikel ini, kami akan meneroka kaedah yang berbeza untuk gelung melalui kandungan fail menggunakan skrip bash, termasuk garis bacaan mengikut baris dan perkataan dengan perkataan.

Kaedah 1: Menggunakan perintah 'sementara' gelung dan 'baca'

The 'sementara' gelung digabungkan dengan 'Baca' Perintah adalah kaedah yang paling biasa untuk gelung melalui kandungan fail di bash. Kaedah ini membaca baris fail mengikut baris, yang amat berguna untuk memproses fail besar yang mungkin tidak sesuai dengan ingatan.

#!/bin/bash filename = "Contoh.txt "sementara ifs = baca -r line do echo" $ line "selesai < "$filename"
12345678#!/bin/bash filename = "Contoh.txt "sementara ifs = baca -r linedo echo" $ line "selesai < "$filename"

Dalam contoh ini, kami menggunakan 'Ifs' (Pemisah medan dalaman) Pembolehubah untuk menentukan pemisah (secara lalai, garis baru) untuk memisahkan medan dalam input. The 'Baca' Perintah membaca setiap baris, dan 'echo' Perintah mencetak garis ke konsol.

Kaedah 2: Menggunakan perintah 'untuk' gelung dan 'kucing'

Kaedah lain untuk gelung melalui kandungan fail menggunakan arahan 'untuk' gelung dan 'kucing'. Kaedah ini kurang berkesan daripada perintah 'sementara' gelung dan 'baca', kerana ia membaca keseluruhan fail ke dalam ingatan sebelum melengkung melaluinya.

#!/bin/bash filename = "Contoh.txt "untuk baris dalam $ (kucing" $ filename ") do echo" $ line "yang dilakukan
12345678#!/bin/bash filename = "Contoh.txt "untuk baris dalam $ (kucing" $ filename ") do echo" $ line "yang dilakukan

Dalam contoh ini, kami menggunakan 'Kucing' perintah untuk membaca keseluruhan kandungan fail, dan 'Untuk' Gelung melangkah ke setiap baris. Walau bagaimanapun, kaedah ini memisahkan kandungan dengan ruang putih (ruang, tab, dan garis baru) secara lalai, yang boleh membawa kepada tingkah laku yang tidak dijangka apabila memproses fail dengan pelbagai perkataan.

Kaedah 3: Looping melalui perkataan dengan 'ifs'

Sekiranya anda perlu memproses perkataan fail dengan perkataan, anda boleh menggunakan 'Ifs' pemboleh ubah untuk menukar pembatas ke ruang.

#!/bin/bash filename = "Contoh.txt "ifs = $ '\ t \ n' for word in $ (kucing" $ filename ") do echo" $ word "selesai
123456789#!/bin/bash filename = "Contoh.txt "ifs = $ '\ t \ n'for word in $ (Cat" $ filename ") Do echo" $ word "selesai

Dalam contoh ini, kami menetapkan pemboleh ubah 'ifs' kepada kombinasi ruang, tab, dan aksara baru, yang membolehkan gelung melelehkan kata -kata dan bukannya garis.

Kaedah 4: Menggunakan 'awk' untuk gelung lanjutan

Untuk pemprosesan fail yang lebih maju, anda boleh menggunakan perintah 'awk', yang merupakan alat pemprosesan teks yang kuat dengan fungsi gelung terbina dalam.

#!/bin/bash filename = "Contoh.txt "awk 'for (i = 1; i<=NF; i++) print $i ' "$filename"
12345#!/bin/bash filename = "Contoh.txt "awk 'for (i = 1; i<=NF; i++) print $i ' "$filename"

Dalam contoh ini, 'Awk' Membaca fail dan gelung melalui setiap medan (perkataan) menggunakan pembolehubah terbina dalamnya 'Nf' (Bilangan medan) dan '$ i' (nilai medan semasa). Kaedah ini amat berguna untuk tugas manipulasi teks yang lebih kompleks.

Kesimpulan

Dalam artikel ini, kami telah meneroka empat kaedah untuk gelung melalui kandungan fail dalam bash: menggunakan gelung 'sementara' dan 'Baca' perintah, yang 'Untuk' gelung dan 'Kucing' perintah, menukar 'Ifs' pemboleh ubah untuk gelung melalui kata -kata, dan menggunakan 'Awk' Perintah untuk gelung lanjutan. Bergantung pada keperluan anda Pilih salah satu pilihan di atas untuk gelung melalui denda dalam skrip shell.