Odpowiedzi:
Opcja odwracania dopasowania wzorca -v
dla grep
jest naprawdę pomocna w tym:
grep -v 'UFW BLOCK' /var/log/syslog
Spowoduje to wyświetlenie wszystkich wierszy niezawierających UFW BLOCK
. Ponieważ grep
domyślnie używane są podstawowe wyrażenia regularne, włączenie nawiasów spowoduje wyszukanie dowolnego z pojedynczych znaków „UFW BLOCK”, w tym spacji. Prawdopodobnie skończysz bez wyjścia. Jeśli chcesz się upewnić, że wokół łańcucha znajdują się nawiasy klamrowe, ucieknij przed nimi \[UFW BLOCK\]
lub skorzystaj z -F
opcji grep
włączenia tylko stałych ciągów znaków (dzięki Zanna i Steeldriver za radę na ten temat):
grep -Fv '[UFW BLOCK]' /var/log/syslog
Możesz ułatwić przeglądanie, przesyłając dane wyjściowe do pagera, takiego jak less
:
grep -v 'UFW BLOCK' /var/log/syslog | less
Lub przekieruj dane wyjściowe do pliku w katalogu domowym w celu późniejszego przeglądania:
grep -v 'UFW BLOCK' /var/log/syslog > ~/filtered_syslog
fgrep
polecenia równoważnego z grep -F
.
Możesz użyć dowolnego narzędzia z funkcjami edycji. Otrzymałeś już rozwiązania za pomocą grep
i sed
oto kilka innych opcji. Wszystkie one mogą być łatwo przekierowane do less
lub more
czy cokolwiek innego.
Perl
perl -ne 'print unless /\[UFW BLOCK\]/' /var/log/syslog
Ponieważ jest to Perl, TIMTOWDI! .
perl -pe '$_="" if /\[UFW BLOCK\]/' /var/log/syslog
perl -ne '/\[UFW BLOCK\]/ || print' /var/log/syslog
perl -ne 'print if !/\[UFW BLOCK\]/' /var/log/syslog
perl -ne '!/\[UFW BLOCK\]/ && print' /var/log/syslog
perl -ne '/\[UFW BLOCK\]/ ? "" : print' /var/log/syslog
awk
awk '!/\[UFW BLOCK\]/' file
Możesz także użyć awk
:
awk '!/PATTERN/' log
Używam go, gdy mam więcej niż jeden „wzór” i nie chcę używać dwóch grep
takich jak:
... | grep -v foo | grep -v bar
której składnia to:
awk '!/PATTERN/ && !/PATTERN2/' log
grep -Ev "foo|bar"
?
-e
do zdefiniowania wielu wzorów. grep -v -e 'foo' -e 'bar'
less
oferuje możliwość filtrowania wyświetlanych linii po wzorcu wyrażenia regularnego. Możesz użyć tej funkcji, wpisując,&
a następnie wzorzec, i możesz cofnąć, pisząc&
samodzielnie.