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:
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.
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.
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ę.
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.
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
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:
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.
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
Dane wyjściowe pokazane na poniższym obrazku zapewnią, że wszystkie odczytane wiersze zostały skopiowane do nowego pliku tekstowego.
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.