Zrozumienie polecenia grep z praktycznymi przykładami, aby łatwo filtrować i wyświetlać zawartość pliku
GREP
oznacza „Globalny druk regularny”. Jest to przydatne narzędzie wiersza poleceń dostarczane przez Linuksa, służące do wyszukiwania wiersza tekstu, który odpowiada wzorcowi podanemu przez użytkownika.
grep
pobiera dane wejściowe od użytkownika w postaci ciągów lub słów, które użytkownik chce wyszukać w określonym pliku. Polecenie sprawdza następnie plik określony przez użytkownika pod kątem tego wzorca, a następnie zwraca wiersze zgodne z podanym wzorcem.
Wykonuje świetną robotę, filtrując zawartość pliku, dzięki czemu nasze zadanie jest łatwiejsze do wyszukiwania określonej zawartości w jednym lub wielu plikach jednocześnie.
W tym artykule przyjrzyjmy się funkcjonowaniu grep
polecenie ze szczegółowymi przykładami praktycznymi.
Opcje dostępne z grep
Komenda
Oto niektóre z podstawowych opcji, z których będziesz często korzystać grep
Komenda.
Opcja | Opis |
-i | W przypadku wyszukiwania bez uwzględniania wielkości liter |
-r | Aby rekursywnie wyszukiwać wszystkie pliki w określonym katalogu i jego podkatalogach |
-C | Aby wyświetlić całkowitą liczbę wystąpień ciągu |
-v | Aby wyświetlić niepasujące linie |
-w | Filtruj dla tego konkretnego słowa używanego osobno |
Używając grep
Komenda
grep
polecenie jest zwykle używane z potoku (|
) pożytek. Można go zaimplementować za pomocą potoku powłoki, gdy chcesz go używać z innymi poleceniami Linuksa. Chociaż, grep
może być również stosowany samodzielnie bez rury (|
) pożytek.
Zobaczmy niektóre z podstawowych składni grep
polecenie z narzędziem potoku i bez niego.
Najpierw pokażę przykładowy plik tekstowy, którego użyję do zilustrowania grep
Komenda.
INDIE TO PIĘKNY KRAJ POKOJU KOCHAJĄCYCH LUDZI. Indie stoją na trzech filarach: władzy ustawodawczej, wykonawczej i sądownictwa. Indie to piękny kraj, w którym ludzie kochają pokój. Indie troszczą się o ludzi, ponieważ ich zasoby kartezjańskie określają znaczenie wszystkich współrzędnych kartezjańskich. Poniżej znajdują się dwie puste linie. używanie wozu wołowego jest powszechnym widokiem w wiosce przy pracach agrarnych. To jest koniec przykładowego pliku.
grep
używany z rurą ( | )pożytek
grep
Polecenie można zaimplementować wraz z innymi poleceniami systemu Linux za pomocą potoków powłoki. Na przykład, używając Kot
polecenie, aby wyświetlić zawartość pliku, ale jednocześnie potoku wyjście za pomocą grep
polecenie, aby wyświetlić tylko te treści, które chcesz zobaczyć. Będzie to jaśniejsze, gdy przejdziemy przez przykład.
Składnia:
[polecenie] | grep [napis]
Przykład:
kot przyklad.txt | grep ustawodawca
Tutaj użyłem Kot
polecenie, aby wyświetlić kilka wierszy z pliku „sample.txt”. Wyświetlane mają być tylko te wiersze, które zawierają w sobie słowo „legislatura” i zignorować pozostałe wiersze.
Wyjście:
gaurav@ubuntu:~/workspace$ cat sample.txt | grep legislature india stoi na trzech filarach: władzy ustawodawczej, wykonawczej i sądownictwa. gaurav@ubuntu:~/workspace$
grep
używany bez rury ( | )pożytek
grep
może być nawet używany bezpośrednio jako indywidualne polecenie bez użycia potoku ( |
) pożytek.
Składnia:
grep [ciąg_do_przeszukania] [nazwa pliku]
Przykład:
grep Indie przykładowy.txt
Wyjście:
Indie to piękny kraj, w którym ludzie kochają pokój. Indie dbają o ludzi, ponieważ są to zasoby
Dlatego użyłem grep
polecenie bezpośrednio, aby odfiltrować wiersze zawierające ciąg „Indie” z pliku tekstowego „sample.txt”.
Wyszukiwanie bez rozróżniania wielkości liter przy użyciu grep
Komenda
Linux bardzo ostrożnie podchodzi do rozróżniania wielkości liter, gdy uruchamiamy polecenia na terminalu. Wymaga to od użytkownika rozważenia wielkości liter w łańcuchu umieszczonym w poleceniu.
Zobaczmy to na przykładzie.
grep Peace sample.txt
W tym przypadku nie otrzymamy wyniku, ponieważ w przykładowym pliku nie ma słowa „pokój”. Mamy słowo „Pokój” przez duże „P”. Słowo jest takie samo, ale kiedy używamy grep
polecenie bez żadnej opcji, szuka dokładnego dopasowania w pliku, pomijając wszelkie zmiany wielkości liter.
Aby uniknąć tej niejasności, możesz po prostu użyć -i
opcja, która dosłownie mówi grep
Komenda „zapomnij o przypadku, w którym umieściłem ciąg, i po prostu wyszukaj wszystkie pasujące wzorce w pliku”.
Składnia:
grep -i [napis] [nazwa pliku]
Przykład:
grep -i pokój przykład.txt
Wyjście:
INDIE TO PIĘKNY KRAJ POKOJU KOCHAJĄCYCH LUDZI. Indie to piękny kraj, w którym ludzie kochają pokój.
Wszystkie pasujące wiersze są wyświetlane niezależnie od wielkości pasującego łańcucha.
Wyszukiwanie rekurencyjne za pomocą grep
Komenda
ten -r
Opcja wyszuka wszystkie pliki w katalogu i wszystkie jego podkatalogi, które pasują do wzorca łańcucha podanego przez użytkownika w poleceniu.
Składnia:
grep -i -r [ciąg] [ścieżka_pliku]
Przykład:
grep -i -r tomcat /home/gaurav/workspace
Ciąg tutaj to „tomcat” i zostanie przeszukany w obszarze roboczym katalogu. Wszystkie podkatalogi i pliki w katalogu „obszar roboczy” również zostaną przeskanowane w celu dopasowania dostarczonego wzorca ciągu.
Wyjście:
./context_log.policy://catalina.policy - Uprawnienia polityki bezpieczeństwa dla Tomcata 7./context_log.policy:// Uwaga: Jeśli tomcat-juli.jar znajduje się w ${catalina.base}, a nie w ${catalina.home }, ./context_log.policy:// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "file:${catalina.home }/bin/tomcat-juli.jar" { ./context_log.policy: permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; ./context.xml: ./catalina.properties:# - Tomcat Bootstrap JAR ./catalina.properties:# - Tomcat API JAR ./catalina.properties:# - Tomcat JAR ./catalina.properties:# - Wspólne inne niż Tomcat Pliki JAR ./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar ./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true ./catalina.properties:# tomcat.util.buf.StringCache.char.enabled=true ./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000 ./catalina.properties:#tomcat.util.buf.StringCache.cacheSize=5000 . /server.xml: pathname="conf/tomcat-users.xml" /> ./server.xml:
UWAGA: Podczas korzystania z -r
opcja z grep
polecenie musimy podać ścieżkę pliku, a nie nazwę pliku
Wyszukiwanie całych słów tylko za pomocą grep
Komenda
Wiele razy jest tak, że będziesz szukał jednego słowa, ale w końcu zapełnisz swój terminal pasującymi liniami, które zawierają pasujące słowo, ale nie jako pojedyncze słowo. Możesz zobaczyć wiersze zawierające słowa, których podczęścią jest wprowadzony ciąg.
Mylisz się z tym? Nie martw się, o wiele łatwiej to zrozumieć, gdy zdobędziesz przykład.
Przykład:
Tutaj chcę wyszukać pojedyncze słowo „koszyk” i wyświetlić wszystkie linie pasujące do tego słowa w pliku „sample.txt”.
grep -i koszyk przykładowy.txt
Wyjście:
Współrzędne kartezjańskie ważność wszystkich współrzędnych kartezjańskich. używanie wozu wołowego jest częstym widokiem w wiosce przy pracach agrarnych. Wóz zniknął, gdy chłopiec zostawił go luzem.
Na wyjściu można zauważyć, że słowo „kartezjański” zawiera również słowo „wózek”, a zatem wiersze zawierające słowo „kartezjański” są również wyświetlane, chociaż nie chcemy, aby były wyświetlane.
Możesz użyć -w
opcja z grep
polecenie, aby rozwiązać tę niejednoznaczność.
Składnia:
grep -i -w [ciąg] [nazwa pliku]
Przykład:
grep -i -w koszyk przykładowy.txt
Wyjście:
używanie wozu wołowego jest powszechnym widokiem w wiosce przy pracach agrarnych. Wózek zniknął, gdy chłopiec zostawił go luzem.
Teraz, kiedy już wykorzystałeś –w
opcja z grep
otrzymasz tylko te wiersze, w których słowo „wózek” jest używane jako całość.
Wyszukiwanie odwrócone za pomocą grep
Komenda
grep
polecenie może być również użyte w odwrotny sposób. Możemy użyć grep
polecenie przeciwnie, ukrywając pasujące linie i wyświetlając tylko te linie, w których nie znaleziono dopasowania. Możesz to zrobić za pomocą -v
opcja z grep
Komenda.
Składnia:
grep -i -v [ciąg] [nazwa pliku]
Przykład:
grep -i -v przykładowy zasób.txt
Wyjście:
INDIE TO PIĘKNY KRAJ POKOJU KOCHAJĄCYCH LUDZI. Indie stoją na trzech filarach: władzy ustawodawczej, wykonawczej i sądownictwa. Indie to piękny kraj, w którym ludzie kochają pokój. współrzędne kartezjańskie ważność wszystkich współrzędnych kartezjańskich. używanie wozu wołowego jest powszechnym widokiem w wiosce przy pracach agrarnych. To jest koniec przykładowego pliku.
Na wyjściu wyświetlane są wszystkie inne wiersze oprócz wiersza zawierającego słowo „zasób”.
Zliczanie wystąpień pasującego ciągu
Wyjście grep
polecenie jest zwykle bardzo długie, jeśli dane w pliku są obszerne. Im więcej dopasowań, tym dłuższe są wyjścia grep
Komenda. Linux udostępnia opcję, w której możesz wyświetlić liczbę wystąpień dopasowania.
Składnia:
grep -i -c [ciąg] [nazwa pliku]
Przykład:
grep -i -c indie przykładowy.txt
Wyjście:
gaurav@ubuntu:~/workspace$ grep -i -c indie przykład.txt 4 gaurav@ubuntu:~/workspace$
W tym przypadku wynikiem jest liczba, która jest liczbą wystąpień słowa „Indie” w pliku sample.txt.
UWAGA: użyłem -i
opcja w każdym przykładzie, aby być bezpiecznym w przypadku problemu z rozróżnianiem wielkości liter. Jeśli jesteś pewien co do wielkości słowa, którego szukasz, możesz bezpiecznie pominąć -i
opcja.
Wniosek
Poznaliśmy podstawowe zastosowania grep
polecenie w systemach Linux w tym samouczku. Nauczyliśmy się również wyświetlać różne treści, które najlepiej odpowiadają naszym wymaganiom i nie zapychać terminala mnóstwem wierszy. grep
Polecenie z pewnością zaoszczędzi czas, jeśli zostanie użyte do skanowania dużych zbiorów danych.