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.
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.