Looping melalui konten file dalam bash
- 2839
- 363
- Simon Cormier
Bash, shell bourne-again, adalah cangkang baris perintah yang populer dan bahasa skrip yang banyak digunakan untuk kesederhanaan dan kemudahan penggunaannya. Salah satu tugas paling umum yang mungkin perlu dilakukan orang menggunakan bash adalah melingkarkan konten file.
Dalam artikel ini, kami akan mengeksplorasi berbagai metode untuk mengulangi konten file menggunakan skrip bash, termasuk membaca baris demi baris dan kata demi kata.
Metode 1: Menggunakan perintah 'while' loop dan 'baca'
Itu 'ketika' Loop dikombinasikan dengan 'membaca' Perintah adalah metode yang paling umum untuk diulang melalui konten file dalam bash. Metode ini membaca file baris demi baris, yang sangat berguna untuk memproses file besar yang mungkin tidak masuk ke dalam memori.
#!/Bin/Bash FileName = "Contoh.txt "while ifs = baca -r line do echo" $ line "selesai < "$filename"12345678 | #!/Bin/Bash FileName = "Contoh.txt "while ifs = baca -r linedo echo" $ line "selesai < "$filename" |
Dalam contoh ini, kami menggunakan 'Ifs' (Pemisah Bidang Internal) Variabel untuk menentukan pembatas (secara default, garis baru) untuk memisahkan bidang dalam input. Itu 'membaca' Perintah membaca setiap baris, dan 'gema' Perintah mencetak baris ke konsol.
Metode 2: Menggunakan perintah 'untuk' loop dan 'kucing'
Metode lain untuk mengulang melalui konten file adalah menggunakan perintah 'untuk' loop dan 'kucing'. Metode ini kurang efisien daripada perintah 'while' loop dan 'baca', karena membaca seluruh file ke dalam memori sebelum mengulanginya.
#!/Bin/Bash FileName = "Contoh.txt "for line in $ (cat" $ filename ") do echo" $ line "selesai12345678 | #!/Bin/Bash FileName = "Contoh.txt "for line in $ (cat" $ filename ") do echo" $ line "selesai |
Dalam contoh ini, kami menggunakan 'kucing' perintah untuk membaca seluruh konten file, dan 'untuk' Loop iterasi di setiap baris. Namun, metode ini membagi konten dengan whitespace (spasi, tab, dan newline) secara default, yang dapat menyebabkan perilaku yang tidak terduga saat memproses file dengan banyak kata per baris.
Metode 3: Mengulangi kata -kata dengan 'ifs'
Jika Anda perlu memproses kata berdasarkan kata, Anda dapat menggunakan 'Ifs' variabel untuk mengubah pembatas menjadi ruang.
#!/Bin/Bash FileName = "Contoh.txt "ifs = $ '\ t \ n' for word in $ (cat" $ filename ") do echo" $ word "selesai123456789 | #!/Bin/Bash FileName = "Contoh.txt "ifs = $ '\ t \ n'for word in $ (cat" $ filename ") do echo" $ word "selesai |
Dalam contoh ini, kami mengatur variabel 'IFS' ke kombinasi ruang, tab, dan karakter baru, yang memungkinkan loop untuk mengulangi kata -kata alih -alih baris.
Metode 4: Menggunakan 'AWK' untuk Looping Lanjutan
Untuk pemrosesan file yang lebih canggih, Anda dapat menggunakan perintah 'awk', yang merupakan alat pemrosesan teks yang kuat dengan fungsionalitas looping bawaan.
#!/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 file dan loop melalui setiap bidang (kata) menggunakan variabel bawaannya 'Nf' (Jumlah bidang) dan '$ i' (Nilai bidang saat ini). Metode ini sangat berguna untuk tugas manipulasi teks yang lebih kompleks.
Kesimpulan
Dalam artikel ini, kami telah mengeksplorasi empat metode untuk melingkar melalui konten file dalam bash: menggunakan loop 'while' dan 'membaca' perintah, The 'untuk' loop dan 'kucing' perintah, mengubah 'Ifs' variabel untuk mengulangi kata -kata, dan menggunakan 'Awk' Perintah untuk Looping Lanjutan. Tergantung pada persyaratan Anda, pilih salah satu opsi di atas untuk melingkar melalui denda dalam skrip shell.
- « Cara membuat direktori jika tidak ada di linux
- Perbedaan antara kutipan tunggal dan ganda dalam bash »