Risposte:
L'opzione di inversione del pattern match -v
per grep
è davvero utile per questo:
grep -v 'UFW BLOCK' /var/log/syslog
Questo ti mostrerà tutte le righe che non contengono UFW BLOCK
. Poiché grep
utilizza le espressioni regolari di base per impostazione predefinita, l'inclusione delle parentesi consentirà di cercare uno dei singoli caratteri di "UFW BLOCK" compreso lo spazio. Probabilmente finirai senza output. Se devi assicurarti che ci siano parentesi attorno alla stringa, scappa \[UFW BLOCK\]
o usa l' -F
opzione di grep
includere solo stringhe fisse (grazie a Zanna e Steeldriver per il consiglio su questo):
grep -Fv '[UFW BLOCK]' /var/log/syslog
È possibile semplificare la visualizzazione eseguendo il piping dell'output a un cercapersone come less
:
grep -v 'UFW BLOCK' /var/log/syslog | less
O reindirizza l'output su un file nella tua home directory per una visualizzazione successiva:
grep -v 'UFW BLOCK' /var/log/syslog > ~/filtered_syslog
fgrep
comando che è equivalente a grep -F
.
È possibile utilizzare qualsiasi strumento con funzionalità di modifica. Ti sono già state fornite soluzioni usando grep
e sed
, qui ci sono alcune altre scelte. Tutti questi possono essere facilmente reindirizzati less
o more
o qualsiasi altra cosa.
Perl
perl -ne 'print unless /\[UFW BLOCK\]/' /var/log/syslog
Dato che questo è 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
Puoi awk
anche usare :
awk '!/PATTERN/' log
Lo uso quando ho più di un "modello" e non voglio usarne due grep
come:
... | grep -v foo | grep -v bar
quale è la sintassi:
awk '!/PATTERN/ && !/PATTERN2/' log
grep -Ev "foo|bar"
?
-e
per definire più motivi. grep -v -e 'foo' -e 'bar'
Con less
l' &
opzione del comando è possibile filtrare per visualizzare solo lo schema corrispondente desiderato come di seguito,
& /PATTERN/
nel tuo caso se vuoi che le linee di filtro UFW BLOCK
non vengano visualizzate nell'output, puoi semplicemente usare &!
come di seguito:
&! /UFW BLOCK/
less
offre la possibilità di filtrare le linee visualizzate dopo un modello regex. È possibile utilizzare questa funzione digitando&
seguito dal modello e ripristinarlo digitando da&
solo.