Bash Dla każdej linii w pliku

Bash Each Line File



Pętla For w Bash może być używana z różnymi odmianami do wykonywania wielu zadań. Jedną z takich odmian jest For each line in file, która odpowiada za odczytywanie wszystkich linii w pliku. W tym artykule omówimy metody używania każdej linii w pliku w Bash.

Uwaga: metody pokazane poniżej zostały zademonstrowane w Ubuntu 20.04. Jednak będą również dobrze współpracować z każdą inną dystrybucją Linuksa.







Metody użycia dla każdej linii w pliku w Bash:

W tych metodach pokażemy ci przykład, w którym możesz odczytać każdą linię z pliku, a następnie możesz wyświetlić ją na terminalu lub możesz nawet przechowywać te linie w innym pliku. Przyjrzyjmy się obu tym metodom.



Metoda nr 1: Wyświetlanie linii odczytu na terminalu:

Aby wyświetlić wiersze pliku na terminalu przy użyciu dla każdego wiersza w pliku, będziesz musiał wykonać następujące kroki:



Krok nr 1: Tworzenie fikcyjnego pliku tekstowego:

Przede wszystkim musisz stworzyć plik tekstowy z losowymi danymi na potrzeby demonstracji. Chociaż ten plik tekstowy można utworzyć w dowolnym miejscu, zdecydowanie zaleca się utworzenie go w folderze domowym. Aby to zrobić, kliknij ikonę Menedżera plików podświetloną na obrazku pokazanym poniżej:





  • Tworzenie fikcyjnego pliku tekstowego

    Teraz kliknij prawym przyciskiem myszy w dowolnym miejscu w folderze domowym i wybierz opcję Nowy dokument z wyświetlonego menu. Następnie wybierz opcję Pusty dokument. Po utworzeniu pustego dokumentu w folderze domowym podaj wybraną nazwę, a następnie rozszerzenie .txt. W tym przykładzie nazwaliśmy go jako ForEachLine.txt.

  • Tworzenie fikcyjnego pliku tekstowego2
    Kliknij dwukrotnie ten plik tekstowy, aby go otworzyć, a następnie wpisz w nim dowolny losowy tekst, jak pokazano na poniższym obrazku. Po wykonaniu tej czynności zapisz ten plik i zamknij go.



  • Tworzenie fikcyjnego pliku tekstowego3

    Krok #2: Tworzenie skryptu Bash:

    Teraz utwórz plik Bash w taki sam sposób, w jaki utworzyłeś plik tekstowy w folderze domowym, z tym wyjątkiem, że tym razem musisz podać jego nazwę, a następnie rozszerzenie .sh zamiast rozszerzenia .txt. Nazwaliśmy nasz plik Bash jako ForEachLine.sh, ale możesz nadać mu dowolną nazwę.
    Tworzenie skryptu Bash

    Otwórz ten plik, klikając go dwukrotnie, a następnie wpisz skrypt pokazany na obrazku poniżej w nowo utworzonym pliku Bash. Tutaj pierwsza linia wskazuje, że następujący skrypt jest skryptem Bash. Po prostu utworzyliśmy zmienną o nazwie File i jako jej wartość przypisaliśmy nazwę naszego pliku tekstowego, tj. ForEachLine.txt. Następnie utworzyliśmy zmienną o nazwie Lines i wyrównaliśmy ją do $(cat $File). Tutaj komenda cat odczytuje zawartość naszego pliku tekstowego i gdy jest poprzedzona symbolem $, to zawartość odczytana przez to polecenie zostanie zapisana w zmiennej Lines. W ten sposób wszystkie wiersze pliku o nazwie ForEachLine.txt zostaną zapisane w zmiennej Lines. Następnie zastosowaliśmy pętlę For, która ma iterator Line. Ten iterator działa na zmiennej Lines, którą stworzyliśmy powyżej i będzie iterować przez wszystkie wiersze jeden po drugim. Następnie w bloku do-done po prostu wyświetliliśmy wszystkie te wiersze na terminalu, używając polecenia echo.
    Tworzenie skryptu Bash2

    Krok #3: Uruchamianie skryptu Bash:

    Teraz uruchom terminal w Ubuntu 20.04, a następnie uruchom w nim następujące polecenie, aby wykonać utworzony powyżej skrypt Bash:
    bash ForEachLine.sh
    Uruchamianie skryptu Bash

    Gdy to polecenie spowoduje wykonanie skryptu bash, będziesz mógł zobaczyć wszystkie wiersze pliku tekstowego na swoim terminalu, jak pokazano na poniższym obrazku:
    Uruchamianie skryptu Bash

    Metoda nr 2: Zapisanie wszystkich odczytanych linii w innym pliku:

    W tej metodzie nieznacznie zmodyfikowaliśmy skrypt Bash utworzony w powyższej metodzie, aby zapisać wszystkie przeczytane wiersze w nowym pliku tekstowym, zamiast wyświetlać je na terminalu. W tym celu wykonaj czynności wymienione poniżej:

    Krok #1: Modyfikowanie utworzonego powyżej skryptu Bash i uruchamianie go:

    Otwórz skrypt Bash, który utworzyłeś w powyższej metodzie i zmodyfikuj go, jak pokazano na poniższym obrazku. Po prostu dodaliśmy symbol>>, a następnie nową nazwę pliku po poleceniu echo w bloku do-done. Ta modyfikacja zapisze wszystkie odczytane linie do nowego pliku tekstowego zamiast wyświetlać je na terminalu. Teraz ponownie uruchom skrypt Bash za pomocą terminala za pomocą polecenia bash, a następnie nazwy pliku Bash. Tym razem, gdy uruchomi się skrypt Bash, utworzy nowy plik tekstowy o nazwie w tym przypadku NewFile.txt.
    Modyfikowanie i uruchamianie skryptu Bash utworzonego powyżej1

    Krok #2: Dostęp do nowo utworzonego pliku tekstowego:

    Aby sprawdzić, czy wszystkie odczytane wiersze zostały zapisane w nowym pliku tekstowym, możesz po prostu wyświetlić zawartość tego pliku, uruchamiając następujące polecenie w terminalu:
    cat NowyPlik.txt
    Dostęp do nowo utworzonego pliku tekstowego
    Dane wyjściowe pokazane na poniższym obrazku zapewnią, że wszystkie odczytane wiersze zostały skopiowane do nowego pliku tekstowego.
    Dostęp do nowo utworzonego pliku tekstowego2

    Wniosek:

    W ten sposób możesz wykorzystać dla każdego wiersza w pliku, aby odczytać wszystkie wiersze pliku, a następnie manipulować nim za pomocą tych wierszy. Właśnie omówiliśmy dwa podstawowe scenariusze w tym artykule, jednak możesz nawet użyć tej pętli do bardziej złożonych problemów.