Pertanyaan: Bisakah Anda menjelaskan cara menggunakan operator OR, AND dan NOT dalam perintah grep Unix dengan beberapa contoh?
Jawaban: Di grep, kami memiliki opsi yang setara dengan operator OR dan NOT. Tidak ada grep AND operator. Tapi, Anda dapat mensimulasikan DAN menggunakan pola. Contoh yang disebutkan di bawah ini akan membantu Anda memahami cara menggunakan OR, AND dan NOT di perintah grep Linux.
File employee.txt berikut digunakan dalam contoh berikut.
$ cat employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 400 Nisha Manager Marketing $9,500 500 Randy Manager Sales $6,000
Anda sudah tahu bahwa grep sangat kuat berdasarkan contoh perintah grep ini.
Grep ATAU Operator
Gunakan salah satu dari 4 metode berikut untuk grep OR. Saya lebih suka metode nomor 3 yang disebutkan di bawah ini untuk grep ATAU operator.
1. Grep ATAU Menggunakan \|
Jika Anda menggunakan perintah grep tanpa opsi apa pun, Anda perlu menggunakan \| untuk memisahkan beberapa pola untuk kondisi atau.
grep 'pattern1\|pattern2' filename
Misalnya, ambil Tech atau Sales dari file employee.txt. Tanpa garis miring di depan pipa, berikut ini tidak akan berfungsi.
$ grep 'Tech\|Sales' employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 500 Randy Manager Sales $6,000
2. Grep ATAU Menggunakan -E
opsi grep -E adalah untuk regexp yang diperpanjang. Jika Anda menggunakan perintah grep dengan opsi -E, Anda hanya perlu menggunakan | untuk memisahkan beberapa pola untuk kondisi atau.
grep -E 'pattern1|pattern2' filename
Misalnya, ambil Tech atau Sales dari file employee.txt. Cukup gunakan | untuk memisahkan beberapa pola ATAU.
$ grep -E 'Tech|Sales' employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 500 Randy Manager Sales $6,000
3. Grep ATAU Menggunakan egrep
egrep persis sama dengan 'grep -E'. Jadi, gunakan egrep (tanpa opsi apa pun) dan pisahkan beberapa pola untuk kondisi atau.
egrep 'pattern1|pattern2' filename
Misalnya, ambil Tech atau Sales dari file employee.txt. Cukup gunakan | untuk memisahkan beberapa pola ATAU.
$ egrep 'Tech|Sales' employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 500 Randy Manager Sales $6,000
4. Grep ATAU Menggunakan grep -e
Menggunakan opsi grep -e Anda hanya dapat melewatkan satu parameter. Gunakan beberapa opsi -e dalam satu perintah untuk menggunakan beberapa pola untuk kondisi atau.
grep -e pattern1 -e pattern2 filename
Misalnya, ambil Tech atau Sales dari file employee.txt. Gunakan beberapa opsi -e dengan grep untuk beberapa pola ATAU.
$ grep -e Tech -e Sales employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 500 Randy Manager Sales $6,000
Grep DAN
5. Grep DAN menggunakan -E ‘pattern1.*pattern2’
Tidak ada operator AND di grep. Namun, Anda dapat mensimulasikan DAN menggunakan opsi grep -E.
grep -E 'pattern1.*pattern2' filename grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename
Contoh berikut akan menangkap semua baris yang berisi "Dev" dan "Tech" di dalamnya (dalam urutan yang sama).
$ grep -E 'Dev.*Tech' employee.txt 200 Jason Developer Technology $5,500
Contoh berikut akan menangkap semua baris yang berisi "Manager" dan "Penjualan" di dalamnya (dalam urutan apa pun).
$ grep -E 'Manager.*Sales|Sales.*Manager' employee.txt
Catatan: Menggunakan ekspresi reguler di grep sangat ampuh jika Anda tahu cara menggunakannya secara efektif.
6. Grep DAN menggunakan Beberapa perintah grep
Anda juga dapat menggunakan beberapa perintah grep yang dipisahkan oleh pipa untuk mensimulasikan skenario AND.
grep -E 'pattern1' filename | grep -E 'pattern2'
Contoh berikut akan menangkap semua baris yang berisi "Manajer" dan "Penjualan" di baris yang sama.
$ grep Manager employee.txt | grep Sales 100 Thomas Manager Sales $5,000 500 Randy Manager Sales $6,000
Gep TIDAK
7. Grep TIDAK menggunakan grep -v
Menggunakan grep -v Anda dapat mensimulasikan kondisi NOT. -v opsi untuk kecocokan terbalik. yaitu Ini cocok dengan semua baris kecuali pola yang diberikan.
grep -v 'pattern1' filename
Misalnya, tampilkan semua baris kecuali yang mengandung kata kunci “Penjualan”.
$ grep -v Sales employee.txt 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 400 Nisha Manager Marketing $9,500
Anda juga dapat menggabungkan NOT dengan operator lain untuk mendapatkan beberapa kombinasi yang kuat.
Misalnya, berikut ini akan menampilkan Manajer atau Pengembang (bot mengabaikan Penjualan).
$ egrep 'Manager|Developer' employee.txt | grep -v Sales 200 Jason Developer Technology $5,500 400 Nisha Manager Marketing $9,500