grep

30 Contoh Grep

30 Contoh Grep
Anda dapat menemukan grep hadir jauh di dalam otak hewan sistem operasi Unix dan mirip Unix. Ini adalah program dasar yang digunakan untuk pencocokan pola dan ditulis pada tahun 70-an bersama dengan alat UNIX lainnya yang kita kenal dan sukai (atau benci).

Sementara belajar tentang bahasa formal dan ekspresi reguler adalah topik yang menarik. Belajar grep memiliki lebih banyak hal daripada regex. Untuk memulainya dan untuk melihat keindahan dan keanggunan grep, Anda perlu melihat beberapa contoh dunia nyata, pertama.

Contoh yang berguna dan membuat hidup Anda sedikit lebih mudah. Berikut adalah 30 kasus penggunaan dan opsi grep yang biasa:.

1. ps aux | grep

ps aux mencantumkan semua proses dan pid yang terkait. Tapi seringkali daftar ini terlalu panjang untuk dilihat manusia. Mem-pipe output ke perintah grep Anda dapat membuat daftar proses yang berjalan dengan aplikasi yang sangat spesifik dalam pikiran. Misalnya bisa sshd atau nginx atau httpd.

# ps aux | grep sshd
akar    400  0.0  0.2  69944  5624 ?       Ss   17:47   0:00 /usr/sbin/sshd -D
akar   1076  0.2  0.3  95204  6816 ?       Ss   18:29   0:00 sshd: root@pts/0
akar   1093  0.0  0.0  12784  932 poin/0    S+   18:29   0:00 grep sshd

2. Menangkap alamat IP Anda

Di sebagian besar sistem operasi, Anda dapat membuat daftar semua antarmuka jaringan Anda dan IP yang ditetapkan ke antarmuka itu dengan menggunakan perintah ifconfig atau ip addr. Kedua perintah ini akan menampilkan banyak informasi tambahan. Tetapi jika Anda ingin mencetak hanya alamat IP (misalnya untuk skrip shell) maka Anda dapat menggunakan perintah di bawah ini:

$ ip addr | grep inet | awk ' cetak $2; '
$ ip addr | grep -w inet | awk ' cetak $2; ' #Untuk baris hanya dengan inet bukan inet6 (IPv6)

Perintah ip addr mendapatkan semua detail (termasuk alamat IP), kemudian disalurkan ke perintah kedua grep inet yang hanya menampilkan baris dengan inet di dalamnya. Ini kemudian disalurkan ke awk print pernyataan yang mencetak kata kedua di setiap baris (sederhananya).

P.S: Anda juga dapat melakukan ini tanpa grep jika Anda tahu awk dengan baik.

3. Melihat upaya SSH yang gagal

Jika Anda memiliki server yang menghadap ke Internet, dengan IP publik, itu akan terus-menerus dibombardir dengan upaya SSH dan jika Anda mengizinkan pengguna untuk memiliki akses SSH berbasis kata sandi (kebijakan yang tidak saya rekomendasikan), Anda dapat melihat semua upaya yang gagal menggunakan perintah grep berikut:

# cat /var/log/auth.log | grep "Gagal"
sampel keluar
5 Des 16:20:03 debian sshd[509]:Sandi gagal untuk root dari 192.168.0.100 port 52374 ssh2
5 Des 16:20:07 debian sshd[509]:Sandi gagal untuk root dari 192.168.0.100 port 52374 ssh2
5 Des 16:20:11 debian sshd[509]:Sandi gagal untuk root dari 192.168.0.100 port 52374 ssh2

4. Perpipaan Grep ke Uniq

Terkadang, grep akan menampilkan banyak informasi. Dalam contoh di atas, satu IP mungkin mencoba masuk ke sistem Anda. Dalam kebanyakan kasus, hanya ada segelintir IP yang menyinggung yang perlu Anda identifikasi dan daftar hitam secara unik.

# cat /var/log/auth.log | grep "Gagal" | uniq -f 3

Perintah uniq seharusnya hanya mencetak baris unik. uniq -f 3 melompati tiga bidang pertama (untuk mengabaikan cap waktu yang tidak pernah diulang) dan kemudian mulai mencari baris unik.

5. Mencari Pesan Kesalahan

Menggunakan Grep untuk akses dan log kesalahan tidak terbatas pada SSH saja. Server web (seperti Nginx) mencatat kesalahan dan mengakses log dengan cukup teliti. Jika Anda menyiapkan skrip pemantauan yang mengirimi Anda peringatan saat grep  “404” mengembalikan nilai baru. Itu bisa sangat berguna.

# grep -w "404" /var/www/nginx/access.catatan
192.168.0.100 - - [06/Des/2018:02:20:29 +0530] "DAPATKAN /favicon.ico HTTP/1.1" 404 200
"http://192.168.0.102/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/70.0.3538.110 Safari/537.36"
192.168.0.101 - - [06/Des/2018:02:45:16 +0530] "DAPATKAN /favicon.ico HTTP/1.1" 404 143
"http://192.168.0.102/" "Mozilla/5.0 (iPad; CPU OS 12_1 seperti Mac OS X)
AppleWebKit/605.1.15 (KHTML, seperti Gecko) Versi/12.0 Seluler/15E148 Safari/604.1"

Ekspresi reguler mungkin bukan "404" tetapi beberapa pemfilteran ekspresi reguler lainnya hanya untuk klien Seluler atau hanya perangkat Apple yang melihat halaman web. Ini memungkinkan Anda untuk memiliki wawasan yang lebih dalam tentang bagaimana kinerja aplikasi Anda.

6. Daftar Paket

Untuk sistem berbasis Debian, dpkg -l mencantumkan semua paket yang diinstal pada sistem Anda. Anda dapat menyalurkannya ke perintah grep untuk mencari paket milik aplikasi tertentu. Sebagai contoh:

# dpkg -l | grep "vim"

7. grep -v nama file

Untuk membuat daftar semua baris yang jangan berisi pola tertentu, gunakan flag -v. Ini pada dasarnya kebalikan dari perintah grep biasa.

8. grep -l

Ini mencantumkan semua file yang berisi setidaknya satu kemunculan dari pola yang disediakan. Ini berguna saat Anda mencari pola di dalam direktori dengan banyak file. Itu hanya mencetak nama file, dan bukan baris spesifik dengan polanya.

9. Opsi kata tunggal -w

$ grep -w nama file

Bendera -w memberi tahu grep untuk mencari pola yang diberikan sebagai keseluruhan kata dan bukan hanya substring dari suatu baris. Misalnya, sebelumnya kami mengambil alamat IP dan polanya tidak ada mencetak garis dengan keduanya tidak ada dan inet6 daftar alamat IPv4 dan IPv6. Tetapi jika kita menggunakan -w hanya menandai garis dengan tidak ada sebagai kata yang didahului dan diikuti oleh spasi putih adalah kecocokan yang valid.

10. Ekspresi Reguler Diperpanjang

Anda akan sering menemukan bahwa ekspresi reguler asli Grep agak membatasi. Di sebagian besar skrip dan instruksi Anda akan menemukan penggunaan flag -E dan ini akan memungkinkan Anda untuk memasukkan pola dalam apa yang disebut Mode Diperpanjang.

Berikut grep dan grep -E perintah untuk mencari kata Superman dan Spiderman.

$ grep teks "\(Super|Spider\)man"
$ grep -E teks "(Super|Spider)man"

Seperti yang Anda lihat, versi yang diperluas jauh lebih mudah dibaca.

11. Grep untuk wadah Anda

Jika Anda memiliki sekelompok besar wadah yang berjalan di host Anda, Anda dapat mengambilnya dengan nama gambar, status, port yang mereka ekspos dan banyak atribut lainnya. Sebagai contoh,

$ buruh pelabuhan ps | grep [namagambar]

12. Grep untuk pod Anda

Sementara kita berada di topik kontainer. Kubernetes sering cenderung meluncurkan beberapa pod di bawah penerapan tertentu given. Sementara setiap pod memiliki nama yang unik, dalam namespace tertentu, mereka memulai dengan nama penerapan, biasanya. Kami dapat memahaminya dan membuat daftar semua pod yang terkait dengan penerapan yang diberikan.

$ kubectl dapatkan pod | grep

13. Grep untuk data besar

Sering kali apa yang disebut analisis “Big Data” melibatkan pencarian sederhana, pengurutan, dan penghitungan pola dalam kumpulan data tertentu. Utilitas UNIX tingkat rendah seperti grep, uniq, wc sangat bagus dalam hal ini. Ini posting blog menunjukkan contoh bagus dari tugas yang diselesaikan hanya dalam hitungan detik menggunakan grep dan utilitas Unix lainnya sementara Hadoop membutuhkan waktu hampir setengah jam.

Misalnya, ini Himpunan data sudah lebih dari 1.Ukuran 7GB. Ini berisi informasi tentang banyak pertandingan catur, termasuk gerakan yang dilakukan, siapa yang menang, dll. Kami hanya tertarik pada hasil jadi kami menjalankan perintah berikut:

$ grep "Hasil" juta basis-2.22.pgn | urutkan | unik -c
221 [Hasil "*"]
653728 [Hasil "0-1"]
852305 [Hasil "1-0"]
690934 [Hasil "1/2-1/2"]

Ini membutuhkan waktu sekitar 15 detik pada prosesor 2-core/4-thread berusia 4 tahun. Jadi lain kali Anda memecahkan masalah "data besar". Pikirkan jika Anda dapat menggunakan grep sebagai gantinya.

14. grep -warna=otomatis

Opsi ini memungkinkan grep menyorot pola di dalam garis tempat ditemukannya.

15. grep -i

Pencocokan pola Grep secara inheren peka huruf besar-kecil. Tetapi jika Anda tidak peduli tentang itu maka menggunakan flag -i akan membuat grep case tidak sensitif.

16. grep -n

Bendera -n akan menunjukkan nomor baris sehingga Anda tidak perlu khawatir menemukan baris yang sama nanti.

17. git grep

Git, sistem kontrol versi, sendiri memiliki perintah grep built-in yang bekerja hampir seperti grep biasa Anda. Tapi itu bisa digunakan untuk mencari pola pada pohon berkomitmen apa pun menggunakan git CLI asli, alih-alih pipa yang membosankan. Misalnya, jika Anda berada di cabang master repo Anda, Anda dapat mengambil seluruh repo menggunakan:

(master) $ git grep

18. grep -o

Bendera -o sangat membantu ketika Anda mencoba men-debug sebuah regex. Ini akan mencetak hanya bagian yang cocok dari baris, bukan seluruh baris. Jadi, jika Anda mendapatkan terlalu banyak garis yang tidak diinginkan untuk pola yang disediakan, dan Anda tidak dapat memahami mengapa itu terjadi. Anda dapat menggunakan flag -o untuk mencetak substring yang menyinggung dan alasan tentang regex Anda mundur dari sana.

19. grep -x

Bendera -x akan mencetak satu baris, jika dan hanya jika, seluruh baris cocok dengan ekspresi reguler yang Anda berikan. Ini agak mirip dengan flag -w yang mencetak sebuah baris jika dan hanya seluruh kata yang cocok dengan ekspresi reguler yang disediakan.

20. grep -T

Saat berurusan dengan log dan output dari skrip shell, kemungkinan besar Anda akan menemukan tab keras untuk membedakan antara kolom output yang berbeda. Tanda -T akan menyelaraskan tab ini dengan rapi sehingga kolom diatur dengan rapi, membuat output dapat dibaca manusia.

21. grep -q

Ini menekan output dan diam-diam menjalankan perintah grep. Sangat berguna saat mengganti teks, atau menjalankan grep dalam skrip daemon.

22. grep -P

Orang yang terbiasa menggunakan sintaks ekspresi reguler dapat menggunakan flag -P untuk menggunakannya. Anda tidak perlu mempelajari ekspresi reguler dasar, yang digunakan grep secara default.

23. grep -D [TINDAKAN]

Di Unix, hampir semuanya dapat diperlakukan sebagai file. Akibatnya, perangkat apa pun, soket, atau aliran data FIFO dapat diumpankan ke grep. Anda dapat menggunakan flag -D diikuti dengan ACTION (tindakan defaultnya adalah READ). Beberapa opsi lainnya adalah SKIP untuk melewati perangkat tertentu secara diam-diam dan RECURSE untuk menelusuri direktori dan symlink secara rekursif.

24. Pengulangan

Jika mencari pola tertentu yang merupakan pengulangan dari pola yang diketahui lebih sederhana, maka gunakan kurung kurawal untuk menunjukkan jumlah pengulangan

$ grep -E “[0-9]10”

Ini mencetak garis yang berisi string 10 digit atau lebih panjang.

25. Singkatan pengulangan

Beberapa karakter khusus dicadangkan untuk jenis pengulangan pola tertentu. Anda dapat menggunakan ini sebagai pengganti kurung kurawal, jika sesuai dengan kebutuhan Anda.

? : Pola tanda tanya sebelumnya harus cocok dengan nol atau satu kali.

*: Pola bintang sebelumnya harus cocok dengan nol kali atau lebih.

+ : Pola sebelum plus harus cocok satu kali atau lebih.

25. Offset Byte

Jika Anda ingin tahu melihat byte offset dari baris di mana ekspresi yang cocok ditemukan, Anda dapat menggunakan flag -b untuk mencetak offset juga. Untuk mencetak offset hanya bagian yang cocok dari suatu baris, Anda dapat menggunakan flag -b dengan flag -o.

$ grep -b -o [nama file]

Offset berarti, setelah berapa byte dari awal file, string yang cocok dimulai.

26. egrep, fgrep dan rgerp

Anda akan sering melihat pemanggilan egrep, untuk menggunakan sintaks ekspresi reguler yang diperluas yang telah kita bahas sebelumnya. Namun, ini adalah sintaks yang tidak digunakan lagi dan disarankan agar Anda menghindari penggunaan ini. Gunakan grep -E sebagai gantinya. Demikian pula, gunakan grep -F, sebagai ganti fgrep dan grep -r sebagai ganti rgrep.

27. grep -z

Terkadang input ke grep bukan baris yang diakhiri dengan karakter baris baru. Misalnya, jika Anda memproses daftar nama file, mereka mungkin berasal dari sumber yang berbeda. Bendera -z memberi tahu grep untuk memperlakukan karakter NULL sebagai akhir baris. Ini memungkinkan Anda untuk memperlakukan aliran masuk sebagai file teks biasa.

28. grep -a [nama file]

Bendera -a memberi tahu grep untuk memperlakukan file yang disediakan seolah-olah itu adalah teks biasa. File bisa berupa biner, tetapi grep akan memperlakukan konten di dalamnya, seolah-olah itu adalah teks.

29. grep -U [nama file]

Bendera -U memberi tahu grep untuk memperlakukan file yang disediakan seolah-olah itu adalah file biner dan bukan teks. Secara default grep menebak jenis file dengan melihat beberapa byte pertama. Menggunakan bendera ini mengesampingkan bahwa tebakan berhasil.

30. grep -m NUM

Dengan file besar, menangkap ekspresi bisa memakan waktu lama. Namun, jika Anda ingin memeriksa hanya NUM nomor pertama yang cocok, Anda dapat menggunakan tanda -m untuk melakukannya. Ini lebih cepat dan hasilnya juga sering dapat dikelola.

Kesimpulan

Banyak pekerjaan sehari-hari seorang sysadmin melibatkan memilah-milah petak besar teks. Ini mungkin log keamanan, log dari web atau server email Anda, aktivitas pengguna atau bahkan teks besar halaman manual man. Grep memberi Anda sedikit fleksibilitas ekstra saat menangani kasus penggunaan ini.

Semoga, beberapa contoh dan kasus penggunaan di atas telah membantu Anda dalam lebih memahami fosil hidup dari sebuah perangkat lunak.

Trackpad dan Mouse Pointer di Layar AppyMouse untuk Tablet Windows
Pengguna tablet sering melewatkan penunjuk mouse, terutama ketika mereka terbiasa menggunakan laptop. Layar sentuh Smartphone dan tablet hadir dengan ...
Tombol tengah mouse tidak berfungsi di Windows 10
Itu tombol tengah mouse membantu Anda menelusuri halaman web dan layar yang panjang dengan banyak data. Jika itu berhenti, Anda akhirnya akan mengguna...
Cara Mengganti Tombol Kiri & Kanan Mouse di PC Windows 10
Sudah menjadi hal biasa bahwa semua perangkat mouse komputer dirancang secara ergonomis untuk pengguna yang tidak kidal. Tetapi ada perangkat mouse ya...