grep
adalah alat baris perintah yang digunakan untuk mencari satu atau lebih file input untuk baris yang cocok dengan ekspresi reguler dan menulis setiap baris yang cocok ke output standar.
Dalam artikel ini, kami akan menunjukkan cara mengecualikan satu atau beberapa kata, pola, atau direktori saat menelusuri dengan grep
.
Kecualikan Kata dan Pola #
Untuk hanya menampilkan baris yang tidak cocok dengan pola pencarian, gunakan -v
( atau --invert-match
) pilihan.
Misalnya untuk mencetak baris yang tidak mengandung string nologin
Anda akan menggunakan:
grep -wv nologin /etc/passwd
root:x:0:0:root:/root:/bin/bash
git:x:994:994:git daemon user:/:/usr/bin/git-shell
linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash
-w
opsi memberitahu grep
untuk mengembalikan hanya baris di mana string yang ditentukan adalah seluruh kata (diapit oleh karakter non-kata).
Secara default, grep
peka huruf besar/kecil. Ini berarti bahwa karakter huruf besar dan kecil diperlakukan berbeda. Untuk mengabaikan kasus saat mencari, aktifkan grep
dengan -i
pilihan.
Jika string pencarian menyertakan spasi, Anda harus menyertakannya dalam tanda kutip tunggal atau ganda.
Untuk menentukan dua atau lebih pola pencarian, gunakan -e
pilihan:
grep -wv -e nologin -e bash /etc/passwd
Anda dapat menggunakan -e
pilihan sebanyak yang Anda butuhkan.
Pilihan lain untuk mengecualikan beberapa pola pencarian adalah dengan menggabungkan pola menggunakan operator ATAU |
.
Contoh berikut mencetak baris yang tidak mengandung string nologin
atau bash
:
grep -wv 'nologin\|bash' /etc/passwd
GNU grep
mendukung tiga sintaks ekspresi reguler, Basic, Extended, dan Perl-compatible. Secara default, grep
menginterpretasikan pola sebagai ekspresi reguler dasar di mana meta-karakter seperti |
kehilangan arti khususnya, dan Anda harus menggunakan versi garis miring terbalik.
Jika Anda menggunakan opsi ekspresi reguler yang diperluas -E
, lalu operator |
tidak boleh diloloskan, seperti yang ditunjukkan di bawah ini:
grep -Ewv 'nologin|bash' /etc/passwd
Anda dapat menentukan kemungkinan kecocokan yang berbeda yang dapat berupa string literal atau kumpulan ekspresi. Pada contoh berikut, baris tempat string games
terjadi di awal baris dikecualikan:
grep -v "^games" file.txt
Keluaran perintah dapat difilter dengan grep
melalui pemipaan, dan hanya garis yang cocok dengan pola tertentu yang akan dicetak pada terminal.
Misalnya, untuk mencetak semua proses yang berjalan di sistem Anda kecuali yang berjalan sebagai “root” pengguna, Anda dapat memfilter output ps
perintah:
ps -ef | grep -wv root
Kecualikan Direktori dan File #
Terkadang saat melakukan pencarian rekursif dengan -r
atau -R
pilihan, Anda mungkin ingin mengecualikan direktori tertentu dari hasil pencarian.
-r
atau -R
options adalah ketika grep dipanggil dengan huruf besar R
itu akan mengikuti semua tautan simbolik
Untuk mengecualikan direktori dari pencarian, gunakan --exclude-dir
pilihan. Jalur ke direktori yang dikecualikan relatif terhadap direktori pencarian.
Berikut adalah contoh yang menunjukkan cara mencari string linuxize
di semua file di dalam /etc
, tidak termasuk /etc/pki
direktori:
grep -R --exclude-dir=pki linuxize /etc
Untuk mengecualikan beberapa direktori, lampirkan direktori yang dikecualikan dalam tanda kurung kurawal dan pisahkan dengan koma tanpa spasi.
Misalnya, untuk menemukan file yang berisi string 'gnu' di sistem Linux Anda kecuali proc
, boot
, dan sys
direktori yang akan Anda jalankan:
grep -r --exclude-dir={proc,boot,sys} gnu /
Saat menggunakan pencocokan karakter pengganti, Anda dapat mengecualikan file yang nama dasarnya cocok dengan GLOB yang ditentukan dalam --exclude
pilihan.
Pada contoh di bawah, kami mencari semua file di direktori kerja saat ini untuk string linuxize
, tidak termasuk file yang diakhiri dengan .png
dan .jpg
direktori:
grep -rl --exclude=*.{png,jpg} linuxize *
Kesimpulan #
grep
perintah memungkinkan Anda untuk mengecualikan pola dan direktori saat mencari file.