Jawaban:
Pilihan pola pertandingan inversi -vuntuk grepbenar-benar membantu untuk ini:
grep -v 'UFW BLOCK' /var/log/syslog
Ini akan menampilkan semua baris yang tidak mengandung UFW BLOCK. Seperti grepmenggunakan ekspresi reguler dasar secara default, dimasukkannya tanda kurung akan membuatnya mencari salah satu karakter individu dari 'UFW BLOCK' termasuk ruang. Anda mungkin berakhir tanpa hasil. Jika Anda perlu memastikan bahwa ada tanda kurung di sekeliling string, lepaskan dari mereka \[UFW BLOCK\], atau gunakan -Fopsi grephanya menyertakan string tetap (Terima kasih kepada Zanna dan Steeldriver untuk sarannya tentang ini):
grep -Fv '[UFW BLOCK]' /var/log/syslog
Anda dapat membuatnya lebih mudah untuk dilihat dengan menyalurkan output ke pager seperti less:
grep -v 'UFW BLOCK' /var/log/syslog | less
Atau redirect output ke file di direktori home Anda untuk dilihat nanti:
grep -v 'UFW BLOCK' /var/log/syslog > ~/filtered_syslog
fgrepperintah yang setara dengan grep -F.
Anda dapat menggunakan alat apa pun dengan kemampuan mengedit. Anda telah diberi solusi menggunakan grepdan sed, berikut adalah beberapa pilihan lain. Semua ini dapat dengan mudah disalurkan ke lessatau moreatau apa pun.
Perl
perl -ne 'print unless /\[UFW BLOCK\]/' /var/log/syslog
Karena ini 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
Anda juga bisa menggunakan awk:
awk '!/PATTERN/' log
Saya menggunakannya ketika saya punya lebih dari satu "pola" dan saya tidak ingin menggunakan dua grepseperti:
... | grep -v foo | grep -v bar
yang sintaksnya adalah:
awk '!/PATTERN/ && !/PATTERN2/' log
grep -Ev "foo|bar"?
-euntuk mendefinisikan beberapa pola. grep -v -e 'foo' -e 'bar'
Dengan opsi lessperintah &itu mungkin untuk menyaring untuk menampilkan hanya pola yang cocok yang diinginkan seperti di bawah ini,
& /PATTERN/
dalam kasus Anda jika Anda ingin garis filter dengan UFW BLOCKtidak ditampilkan dalam output, Anda bisa menggunakan &!seperti di bawah ini:
&! /UFW BLOCK/
lessmenawarkan kemungkinan untuk menyaring garis yang ditampilkan setelah pola regex. Anda dapat menggunakan fitur ini dengan mengetik&diikuti oleh pola, dan Anda dapat mengembalikannya dengan mengetikkan&saja.