Zapętlanie treści pliku w Bash

Zapętlanie treści pliku w Bash

Bash, Bourne-Again Shell, to popularna powłoka wiersza poleceń i językiem skryptów, który jest szeroko stosowany do jego prostoty i łatwości użycia. Jednym z najczęstszych zadań, które można wykonać za pomocą bash, jest zapętlanie treści pliku.

W tym artykule zbadamy różne metody zapętlania treści pliku za pomocą skryptów bash, w tym wiersza czytania według linii i słów według słowa.

Metoda 1: Korzystanie z polecenia „While Loop i”

'chwila' pętla w połączeniu z 'Czytać' Polecenie jest najczęstszą metodą do zapętlania przez zawartość pliku w Bash. Ta metoda odczytuje linię plików według linii, która jest szczególnie przydatna do przetwarzania dużych plików, które mogą nie pasować do pamięci.

#!/bin/bash filename = "przykład.txt „While IFS = odczyt -r linia echo„ $ line ”gotowe < "$filename"
12345678#!/bin/bash filename = "przykład.txt „While IFS = odczyt -r linedo echo„ $ line ”gotowe < "$filename"

W tym przykładzie używamy „IFS” (Wewnętrzny separator pola) Zmienna do określenia ograniczenia (domyślnie nowa linia) do oddzielania pól na wejściu. 'Czytać' Polecenie odczytuje każdy wiersz i 'Echo' polecenie drukuje wiersz do konsoli.

Metoda 2: Korzystanie z polecenia „Do„ Loop i „Cat”

Inną metodą zapętlania zawartości pliku jest użycie polecenia „Do pętli i„ cat ”. Ta metoda jest mniej wydajna niż polecenie „Pętla i”, ponieważ odczytuje cały plik w pamięci przed zapętaniem przez niego.

#!/bin/bash filename = "przykład.txt „dla linii w $ (cat„ $ filename ”) echo„ $ line ”gotowe
12345678#!/bin/bash filename = "przykład.txt „dla linii w $ (cat„ $ filename ”) echo„ $ line ”gotowe

W tym przykładzie używamy 'kot' polecenie do odczytania całej zawartości pliku i 'Do' Pętla iteruje każdą linię. Jednak ta metoda dzieli treść według Whitespace (przestrzenie, karty i nowe linie) domyślnie, co może prowadzić do nieoczekiwanego zachowania podczas przetwarzania plików z wieloma słowami na wiersz.

Metoda 3: Pętanie przez słowa „IFS”

Jeśli chcesz przetworzyć słowo z pliku według słowa, możesz użyć „IFS” zmienna, aby zmienić ogranicznik na przestrzeń.

#!/bin/bash filename = "przykład.txt "ifs = $ '\ t \ n' For Word in $ (cat" $ filename ") echo" $ słowo "gotowe
123456789#!/bin/bash filename = "przykład.txt "ifs = $ '\ t \ n'for Word in $ (cat" $ filename ") echo" $ słowo "gotowe

W tym przykładzie ustawiamy zmienną „IFS” na kombinację przestrzeni, zakładki i nowości, umożliwiając pętlę iterowanie słów zamiast linii.

Metoda 4: Korzystanie z „AWK” do zaawansowanej pętli

Aby uzyskać bardziej zaawansowane przetwarzanie plików, możesz użyć polecenia „AWK”, które jest potężnym narzędziem przetwarzania tekstu z wbudowaną funkcją zapętlania.

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

W tym przykładzie, „awk” odczytuje plik i pętle przez każde pole (słowo) za pomocą wbudowanych zmiennych „NF” (Liczba pól) i „$ i” (bieżąca wartość pola). Ta metoda jest szczególnie przydatna do bardziej złożonych zadań manipulacji tekstem.

Wniosek

W tym artykule zbadaliśmy cztery metody zapętlania przez zawartość pliku w Bash: Korzystanie z „While” 'Czytać' polecenie 'Do' pętla i 'kot' polecenie, zmiana „IFS” zmienne do zapętlania słów i stosowania „awk” polecenie zaawansowanego zapętlania. W zależności od wymagań Wybierz jedną z powyższych opcji zapętlania przez grzywnę w skrypcie powłoki.