Bash dla każdej linii w pliku

Bash dla każdej linii w pliku
Pętla „dla” w Bash może być używana z różnymi wariantami do wykonywania wielu zadań. Jedną z takich odmian jest „dla każdego wiersza w pliku”, który jest odpowiedzialny za odczyt wszystkich wierszy w pliku. W tym artykule porozmawiamy o metodach używania „dla każdej linii w pliku” w Bash.

Uwaga: Poniższe metody zostały wykazane na Ubuntu 20.04. Będą jednak również dobrze działać z dowolnym innym dystrybucją Linuksa.

Metody używania „dla każdej linii w pliku” w Bash:

W tych metodach będziemy pokazać przykład, w którym możesz odczytać każdy wiersz z pliku, a następnie możesz wyświetlić go na terminalu, albo możesz nawet przechowywać te wiersze w innym pliku. Spójrzmy na obie te metody.

Metoda nr 1: do wyświetlania linii odczytu na terminalu:

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

Krok # 1: Tworzenie pliku tekstowego:

Przede wszystkim musisz utworzyć plik tekstowy z pewnymi losowymi danymi ze względu na demonstrację. Chociaż ten plik tekstowy można tworzyć w dowolnym miejscu, jednak zdecydowanie zaleca się utworzenie go w folderze domowym. Aby to zrobić, kliknij ikonę menedżera plików podświetloną na obrazie pokazanym poniżej:

  • Teraz kliknij prawym przyciskiem myszy w dowolnym miejscu w folderze domowym i wybierz opcję nowej dokumentu z wyświetlonego menu. Następnie wybierz opcję pustego dokumentu. Po utworzeniu pustego dokumentu w folderze domowym podaj nazwę wybranego przez niego .rozszerzenie TXT. W tym przykładzie nazwaliśmy go Foreachline.tekst.


  • Kliknij dwukrotnie ten plik tekstowy, aby go otworzyć, a następnie wpisz dowolny losowy tekst, jak pokazano na poniższym obrazku. Po wykonaniu tego zapisz ten plik i zamknij go.

  • Krok 2: Tworzenie skryptu Bash:

    Teraz utwórz plik bash w taki sam sposób, jak utworzyłeś plik tekstowy w folderze domowym, z wyjątkiem tego, że tym razem musisz podać jego nazwę, a następnie .rozszerzenie sh zamiast .rozszerzenie TXT. Nazwaliśmy nasz plik bash jako foreachline.sh, ale możesz nadać mu dowolne wybrane imię.

    Otwórz ten plik, klikając go dwukrotnie, a następnie wpisz skrypt pokazany na poniższym obrazku w nowo utworzonym pliku Bash. Tutaj jest pierwszym wierszem, aby wskazać, że następujący skrypt jest skryptem bash. Po prostu utworzyliśmy zmienną o nazwie „Plik” i przypisaliśmy jej nazwę naszego pliku tekstowego jako jego wartość i.mi. Foreachline.tekst. Następnie utworzyliśmy zmienną o nazwie „Linie” i wyrównaliśmy ją do „$ (cat $ plik)”. Tutaj polecenie CAT odczytuje zawartość naszego pliku tekstowego, a gdy jest poprzedzona symbolem „$”, wówczas zawartość odczytana przez to polecenie będzie przechowywana w zmiennej linii. W ten sposób wszystkie wiersze pliku o nazwie Foreachline.TXT będzie przechowywany w zmiennej linii. Następnie zastosowaliśmy pętlę „for”, która ma iterator „linia”. Ten iterator działa na zmiennej „linii”, którą stworzyliśmy powyżej, i będzie ona iterowana przez wszystkie linie jeden po drugim. Następnie w bloku „Do-Done” po prostu wyświetliśmy wszystkie te wiersze na terminalu, używając polecenia Echo.

    Krok # 3: Uruchamianie skryptu Bash:

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

    Kiedy to polecenie sprawi, że skrypt Bash do wykonania, będziesz mógł zobaczyć wszystkie wiersze pliku tekstowego na terminalu, jak pokazano na poniższym obrazku:

    Metoda nr 2: Zapisywanie wszystkich linii odczytu w innym pliku:

    W tej metodzie nieznacznie zmodyfikowaliśmy skrypt bash utworzony w powyższej metodzie do zapisywania wszystkich linii odczytu w nowym pliku tekstowym, a nie wyświetlanie ich na terminalu. Do tego wykonaj kroki wspomniane poniżej:

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

    Otwórz skrypt bash, który utworzyłeś w powyższej metodzie i zmodyfikuj go, jak pokazano na poniższym obrazie. Po prostu dodaliśmy symbol „>>”, a następnie nową nazwę pliku po poleceniu Echo w bloku „do-wykonania”. Ta modyfikacja zapisuje wszystkie wiersze odczytu do nowego pliku tekstowego zamiast wyświetlać je na terminalu. Teraz uruchom skrypt Bash ponownie za pomocą terminala z poleceniem Bash, a następnie nazwa pliku Bash. Tym razem, gdy skrypt BASH uruchomi się, utworzy nowy plik tekstowy, którego nazwa w tym przypadku jest NewFile.tekst.

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

    Aby sprawdzić, czy wszystkie wiersze „odczytu” 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 Newfile.tekst

    Wyjście pokazane na poniższym obrazku zapewni, że wszystkie linie odczytu zostały skopiowane do nowego pliku tekstowego.

    Wniosek:

    W ten sposób możesz skorzystać z „dla każdej linii w pliku”, aby odczytać wszystkie wiersze pliku, a następnie manipulować nim za pomocą tych wierszy. Właśnie rozmawialiśmy o dwóch podstawowych scenariuszach w tym artykule, jednak możesz nawet użyć tej pętli do bardziej złożonych problemów.