pengantar
Perintah grep Linux digunakan sebagai metode untuk menyaring input.
GREP adalah singkatan dari Global Regular Expression Printer dan oleh karena itu untuk menggunakannya secara efektif, Anda harus memiliki pengetahuan tentang ekspresi reguler.
Dalam artikel ini, saya akan menunjukkan kepada Anda sejumlah contoh yang akan membantu Anda memahami perintah grep.
01 09
Cara Mencari String Dalam File Menggunakan GREP
Bayangkan Anda memiliki file teks yang disebut buku dengan judul buku anak-anak berikut ini:
- Robin Hood
- Anak berkerudung merah
- Peter Pan
- Goldilocks dan Tiga Beruang
- Putri Salju dan Tujuh Kurcaci
- Pinnochio
- The Cat In The Hat
- Tiga babi kecil
- The Gruffalo
- Charlie dan Pabrik Coklat
Untuk menemukan semua buku dengan kata "The" di judul, Anda akan menggunakan sintaks berikut:
grep Buku-buku
Hasil berikut akan dikembalikan:
- Goldilocks dan Tiga Beruang
- Putri Salju dan Tujuh Kurcaci
- The Cat In The Hat
- Tiga babi kecil
- The Gruffalo
- Charlie dan Pabrik Coklat
Dalam setiap kasus, kata "The" akan disorot.
Perhatikan bahwa pencarian bersifat case sensitive jadi jika salah satu judul memiliki "the" daripada "The" maka itu tidak akan dikembalikan.
Untuk mengabaikan kasus, Anda dapat menambahkan switch berikut:
grep buku-buku - kasus asing
Anda juga dapat menggunakan tombol -i sebagai berikut:
grep -i buku-buku
02 09
Cari String Dalam Sebuah File Menggunakan Wildcard
Perintah grep sangat kuat. Anda dapat menggunakan banyak teknik pencocokan pola untuk memfilter hasil.
Dalam contoh ini, saya akan menunjukkan cara mencari string dalam file menggunakan wildcard .
Bayangkan Anda memiliki tempat yang disebut file dengan nama tempat Skotlandia berikut:
aberdeen
aberystwyth
aberlour
inverurie
ketidaksamaan
newburgh
rusa baru
galangan baru
glasgow
edinburgh
Jika Anda ingin menemukan semua tempat dengan inver dalam nama, gunakan sintaks berikut:
grep inver * places
Tanda bintang (*) wildcard mewakili 0 atau banyak. Oleh karena itu jika Anda memiliki tempat yang disebut inver atau tempat yang disebut inverness maka keduanya akan dikembalikan.
Wildcard lain yang dapat Anda gunakan adalah periode (.). Anda dapat menggunakan ini untuk mencocokkan satu huruf.
grep inver.r places
Perintah di atas akan menemukan tempat yang disebut inverurie dan inverary tetapi tidak menemukan invereerie karena hanya ada satu wildcard antara dua r sebagai dilambangkan dengan periode tunggal.
Wildcard periode berguna tetapi dapat menyebabkan masalah jika Anda memiliki satu sebagai bagian dari teks yang Anda cari.
Misalnya lihat daftar nama domain ini
- linux.about.com
- pcsupport.about.com
- mp3.about.com
- minecraft.about.com
- androidgames.about.com
- netforbeginners.about.com
- everydaylinuxuser.com
- google.co.uk
- google.au
- direct.gov.uk
Untuk menemukan semua about.com Anda bisa mencari menggunakan sintaks berikut:
grep * about * nama domain
Perintah di atas akan jatuh jika daftar tersebut berisi nama berikut di dalamnya:
- everydaylinuxuser.com/about.html
Anda bisa, oleh karena itu, coba sintaks berikut:
grep * about.com domainnames
Ini akan berfungsi ok kecuali ada domain dengan nama berikut:
aboutycom.com
Untuk benar-benar mencari istilah about.com, Anda harus menghindari titik tersebut sebagai berikut:
grep * about \ .com domainnames
Wildcard terakhir untuk menunjukkan Anda adalah tanda tanya yang mewakili nol atau satu karakter.
Sebagai contoh:
grep? ber placenames
Perintah di atas akan mengembalikan aberdeen, aberystwyth atau bahkan berwick.
03 09
Mencari String Pada Awal dan Akhir Baris Menggunakan grep
Simbol karat (^) dan dolar ($) memungkinkan Anda mencari pola di awal dan akhir baris.
Bayangkan Anda memiliki file bernama sepakbola dengan nama tim berikut:
- Blackpool
- Liverpool
- Manchester City
- kota Leicester
- Manchester United
- Newcastle United
- FC United Of Manchester
Jika Anda ingin menemukan semua tim yang dimulai dengan Manchester Anda akan menggunakan sintaks berikut:
grep ^ Manchester teams
Perintah di atas akan mengembalikan Manchester City dan Manchester United tetapi tidak FC United Of Manchester.
Atau Anda dapat menemukan semua tim yang berakhir dengan United menggunakan sintaks berikut:
grep United $ teams
Perintah di atas akan mengembalikan Manchester United dan Newcastle United tetapi tidak FC United Of Manchester.
04 09
Menghitung Jumlah Pertandingan Menggunakan grep
Jika Anda tidak ingin mengembalikan baris aktual yang cocok dengan pola menggunakan grep tetapi Anda hanya ingin tahu berapa banyak Anda dapat menggunakan sintaks berikut:
grep -c pattern inputfile
Jika pola dicocokkan dua kali maka angka 2 akan dikembalikan.
05 09
Menemukan Semua Ketentuan yang Tidak Cocok menggunakan grep
Bayangkan Anda memiliki daftar nama tempat dengan negara-negara yang terdaftar sebagai berikut:
- aberdeen skotlandia
- glasgow scotland
- liverpool inggris
- colwyn bay
- London, Inggris
Anda mungkin telah memperhatikan bahwa colwyn bay tidak memiliki negara yang terkait dengannya.
Untuk mencari semua tempat dengan negara Anda bisa menggunakan sintaks berikut:
grep land $ places
Hasilnya akan kembali semua tempat kecuali untuk colwyn bay.
Ini jelas hanya berlaku untuk tempat-tempat yang berakhir di daratan (hampir tidak ilmiah).
Anda dapat membalikkan pilihan menggunakan sintaks berikut:
grep -v land $ places
Ini akan menemukan semua tempat yang tidak berakhir dengan tanah.
06 09
Cara Cari Baris Kosong Dalam File Menggunakan grep
Bayangkan Anda memiliki file input yang digunakan oleh aplikasi pihak ketiga yang berhenti membaca file ketika menemukan baris kosong sebagai berikut:
- aberdeen skotlandia
- keserakahan skotlandia
- liverpool inggris
- Colwyn Bay Wales
Ketika aplikasi sampai ke garis setelah liverpool itu akan berhenti membaca artinya colwyn bay terlewatkan sepenuhnya.
Anda dapat menggunakan grep untuk mencari baris kosong dengan sintaks berikut:
grep ^ $ places
Sayangnya ini tidak terlalu berguna karena hanya mengembalikan garis kosong.
Anda tentu saja dapat menghitung jumlah baris kosong sebagai cek untuk melihat apakah file tersebut valid sebagai berikut:
grep -c ^ $ places
Namun, akan lebih berguna untuk mengetahui nomor baris yang memiliki garis kosong sehingga Anda dapat menggantinya. Anda dapat melakukannya dengan perintah berikut:
grep -n ^ $ places
07 09
Cara Mencari String Karakter Huruf Besar Atau Huruf Kecil Menggunakan grep
Menggunakan grep Anda dapat menentukan baris mana dalam file yang memiliki karakter huruf besar menggunakan sintaks berikut:
grep '[AZ]' nama file
Tanda kurung siku [] memungkinkan Anda menentukan rentang karakter. Dalam contoh di atas cocok dengan karakter apa pun yang ada antara A dan Z.
Oleh karena itu untuk mencocokkan karakter huruf kecil Anda dapat menggunakan sintaks berikut:
grep '[az]' filename
Jika Anda ingin mencocokkan hanya huruf dan bukan angka atau simbol lainnya, Anda dapat menggunakan sintaks berikut:
grep '[a-zA-Z]' filename
Anda dapat melakukan hal yang sama dengan angka sebagai berikut:
grep '[0-9]' filename
08 09
Mencari Pola Mengulangi Menggunakan grep
Anda dapat menggunakan tanda kurung kurawal {} untuk mencari pola berulang.
Bayangkan Anda memiliki file dengan nomor telepon sebagai berikut:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
Anda tahu bahwa bagian pertama dari bilangan harus tiga digit dan Anda ingin menemukan garis yang tidak cocok dengan pola ini.
Dari contoh sebelumnya, Anda tahu bahwa [0-9] mengembalikan semua angka dalam file.
Dalam hal ini kita ingin garis yang dimulai dengan tiga angka diikuti oleh tanda hubung (-). Anda dapat melakukannya dengan sintaks berikut:
grep "^ [0-9] [0-9] [0-9] -" angka
Seperti yang kita ketahui dari contoh sebelumnya, carat (^) berarti bahwa garis harus dimulai dengan pola berikut.
The [0-9] akan mencari nomor apa pun antara 0 dan 9. Karena ini termasuk tiga kali itu cocok 3 angka. Akhirnya ada tanda hubung untuk menunjukkan bahwa tanda hubung harus berhasil tiga angka.
Dengan menggunakan kurung kurawal Anda dapat menjadikan pencarian lebih kecil sebagai berikut:
grep "^ [0-9] \ {3 \} -" angka
Slash lolos dari {bracket sehingga berfungsi sebagai bagian dari ekspresi reguler tetapi pada intinya apa yang dikatakan adalah [0-9] {3} yang berarti angka apa pun antara 0 dan 9 tiga kali.
Kurung keriting juga dapat digunakan sebagai berikut:
{5,10}
{5,}
The {5,10} berarti bahwa karakter yang sedang dicari harus diulang setidaknya 5 kali tetapi tidak lebih dari 10 sedangkan {5,} berarti bahwa karakter harus diulang setidaknya 5 kali tetapi bisa lebih dari itu.
09 09
Menggunakan Output Dari Perintah Lain Menggunakan grep
Sejauh ini kita telah melihat pencocokan pola dalam file individual tetapi grep dapat menggunakan output dari perintah lain sebagai masukan untuk pencocokan pola.
Contoh yang bagus adalah menggunakan perintah ps yang mencantumkan proses aktif.
Misalnya jalankan perintah berikut:
ps -ef
Semua proses yang berjalan di sistem Anda akan ditampilkan.
Anda dapat menggunakan grep untuk mencari proses berjalan tertentu sebagai berikut:
ps -ef | grep firefox