Jak używać dopasowania wykluczającego z grep w Linuksie (drukuj wiersze, które nie pasują)

Jak używać dopasowania wykluczającego z grep w Linuksie (drukuj wiersze, które nie pasują)

grep to narzędzie do wyszukiwania wiersza poleceń dla systemu Linux, które drukuje wiersze w plikach, które pasują do wzorca lub wyrażenia regularnego. Przydatne jest również odwracanie dopasowań, aby odfiltrować wszystkie wiersze w pliku, które zawierają dany ciąg.

Negatywne dopasowanie z grep

Aby użyć negatywnego dopasowania w grep, musisz wydać polecenie z -v flagami lub . --invert-matchSpowoduje to wydrukowanie tylko tych linii, które nie pasują do podanego wzorca.

grep -v "bar"file

Należy jednak pamiętać, że ponieważ grep nic nie pasuje, nie ma możliwości użycia -o flagi do wyświetlenia „tylko dopasowania”, ponieważ technicznie nic nie pasuje. grep może dopasować wiele razy w ciągu, ale w tym przypadku nie ma znaczenia, czy istnieje wiele dopasowań. Każdy pojedynczy mecz spowoduje grep pominięcie linii.

Działa to również z wyrażeniami regularnymi (regexes) i wyświetla dowolny ciąg pasujący do wyrażenia regularnego.

grep -v "foo ba[rz]"file

Chociaż możesz napisać wyrażenia regularne, które dopasowują się do wartości ujemnych, zazwyczaj łatwiej jest w ten sposób odwrócić dopasowanie.

Alternatywnie, jeśli wolisz używać awk, możesz użyć modyfikatora wykrzyknika, aby odwrócić wyrażenie regularne.

awk '!/bar/' file

Negatywne pasujące nazwy plików

Flaga z małymi literami -l spowoduje, że grep nazwy plików zawierające dopasowania zostaną wydrukowane zamiast rzeczywistej dopasowanej treści. Może to być przydatne podczas skanowania listy plików, ale czasami warto ją odwrócić.

Reverse -l to wariant pisany wielkimi literami -L, który działa odwrotnie:

grep -L "bar". /*.txt

Upewnij się, że nie używasz -v flagi c -Ldo odwrócenia dopasowania przed wydrukowaniem plików bez dopasowania, w przeciwnym razie wpadniesz w sytuację „podwójnych przeciwieństw”, w której dopasowanie zostanie odwrócone dwa razy i nie przyniesie pożądanego efektu.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *