Jawaban:
Pilihan pola pertandingan inversi -v
untuk grep
benar-benar membantu untuk ini:
grep -v 'UFW BLOCK' /var/log/syslog
Ini akan menampilkan semua baris yang tidak mengandung UFW BLOCK
. Seperti grep
menggunakan 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 -F
opsi grep
hanya 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
fgrep
perintah yang setara dengan grep -F
.
Anda dapat menggunakan alat apa pun dengan kemampuan mengedit. Anda telah diberi solusi menggunakan grep
dan sed
, berikut adalah beberapa pilihan lain. Semua ini dapat dengan mudah disalurkan ke less
atau more
atau 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 grep
seperti:
... | grep -v foo | grep -v bar
yang sintaksnya adalah:
awk '!/PATTERN/ && !/PATTERN2/' log
grep -Ev "foo|bar"
?
-e
untuk mendefinisikan beberapa pola. grep -v -e 'foo' -e 'bar'
Dengan opsi less
perintah &
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 BLOCK
tidak ditampilkan dalam output, Anda bisa menggunakan &!
seperti di bawah ini:
&! /UFW BLOCK/
less
menawarkan 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.