GNU/Linux >> Belajar Linux >  >> Linux

Cara Menggunakan Perintah Grep untuk Menemukan Teks di File

Linux dan sistem mirip UNIX, semua informasi konfigurasi sistem disimpan dan dimanipulasi dalam bentuk teks biasa. Jadi mencari teks akan menjadi tugas yang sangat umum untuk mengedit dan analisis log.

Perintah grep memungkinkan pencarian teks atau string dalam file atau dari konsol keluaran suatu perintah, untuk istilah atau pola yang cocok dengan ekspresi reguler. Ketika grep menemukan kecocokan dalam satu baris, grep akan menyalin hasil ke layar yaitu stdout.

Dalam tutorial ini kita belajar bagaimana menggunakan perintah grep dengan contoh-contoh praktis.

Perintah Grep

Mari kita periksa sintaks perintah grep sebelum kita mulai menjelaskan penggunaannya.

grep [OPTIONS] PATTERN [FILE...]

Kami akan membahas secara rinci opsi dan pola grep paling umum yang dapat kami gunakan untuk pencarian.

Cara mencari string dalam file

Pada contoh di bawah ini grep mencari file /etc/passwd untuk string 'root' dan mengarahkan output ke stdout.

$ grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

Telusuri teks dari beberapa file

Anda dapat mencari teks tertentu dari beberapa file menggunakan perintah berikut:

$ grep "root" /etc/passwd /etc/group
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
/etc/group:root:x:0:root
/etc/group:bin:x:1:root,bin,daemon
/etc/group:daemon:x:2:root,bin,daemon
/etc/group:sys:x:3:root,bin,adm
/etc/group:adm:x:4:root,adm,daemon
/etc/group:disk:x:6:root
/etc/group:wheel:x:10:root

Penelusuran tidak peka huruf besar-kecil

Opsi -i mencari kasus string/pola yang diberikan secara tidak sensitif.

Dalam contoh berikut grep cocok dengan semua kata seperti “hal”, “HAL” case insensitive:

$ grep -i HAL /etc/passwd
halt:x:7:0:halt:/sbin:/sbin/halt
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin

Penelusuran Rekursif

Pencarian rekursif dicapai dengan menggunakan -r opsi yang akan mencari secara rekursif semua tautan simbolik melewatkan file. Jika Anda ingin memasukkan symlink, gunakan -R .

Pada contoh berikut, perintah grep akan mencari string 'ngnix' di semua file di dalam /var direktori.

$ grep -r nginx /var

Mencari String di Command Output (stdout)

Anda dapat menggunakan pipa output untuk perintah dan grep untuk pola dari outputnya.

Pada contoh berikut saya mencari file dengan nama 'backup' menggunakan perintah ls

$ ls | grep backup

Di sini saya melakukan banyak pipa dan mencari proses 'docker' dan 'apache' dari perintah ps.

$ ps -ef | grep docker | grep apache

Ekspresi Reguler dalam file

Ekspresi Reguler adalah pola yang cocok untuk setiap baris input. Basic dan Extended adalah dua ekspresi reguler yang digunakan oleh perintah grep.

Ekspresi reguler dasar

Secara default, grep menafsirkan pola sebagai ekspresi reguler dasar.

Simbol ^ (tanda sisipan) - Pola yang mengikutinya harus muncul di awal setiap baris. Dalam contoh berikut, string ^welcome hanya akan cocok jika muncul di awal baris.

$ grep “^welcome” filename

Ekspresi Reguler Diperpanjang

Gunakan -E ( atau --extended-regexp) jika Anda ingin grep memahaminya sebagai ekspresi reguler yang diperluas.

Perintah berikut akan mengekstrak semua tautan dari sebuah file

$ grep –Eoi '<a[^>]+>.*</a>' filename

o :Secara default, grep mencetak seluruh baris yang berisi pola pencarian. Opsi ini menginstruksikan perintah grep untuk mencetak hanya kata-kata yang cocok, bukan seluruh baris.

i :Opsi ini meminta perintah grep untuk mengabaikan huruf besar/kecil saat mencocokkan pola.

Telusuri kata lengkap menggunakan grep

-w (word-regexp) flag untuk grep akan membuat ekspresi yang diberikan hanya cocok dengan seluruh kata.

$ grep -iw "samba" /etc/samba/smb.conf
# This is the main Samba configuration file. You should read the
# here. Samba has a huge number of configurable options (perhaps too
# For a step to step guide on installing, configuring and using samba,
# read the Samba-HOWTO-Collection. This may be obtained from:

Menampilkan garis setelah string cocok

-A opsi yang menampilkan N baris setelah string cocok.

$ grep -A 2 "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

Menampilkan garis sebelum string cocok

Kita bisa menggunakan -B opsi untuk menampilkan N baris sebelum string untuk file tertentu

$ grep -B 2 "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
--
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

Telusuri beberapa string

Kita dapat mencari beberapa pola atau string menggunakan operator OR | dan \| . -E (extended-regexp) mengontrol apakah Anda perlu keluar dari karakter khusus tertentu. -e benar-benar bendera untuk menunjukkan pola yang ingin Anda cocokkan.

Contoh 1:menggunakan opsi -E

$ ls | grep -E “li|ovo”
linux24
ovo8_linux24.sh

Atau

$ grep -E "foo|bar" *.txt

Contoh 2:tanpa -E

$ ls | grep ‘li\|ovo’
linux24
ovo8_linux24.sh

Atau

$ grep "foo\|soul\|bar" *.txt

Kecualikan file tertentu dari pencarian

Anda dapat menggunakan opsi -v untuk mengabaikan pencarian. Perintah berikut akan mencari string 'error' di semua file kecuali 'syslog.log'

$ grep -r error * | grep -v ‘/\syslog.log/’

Kesimpulan

Dalam tutorial ini kita belajar bagaimana menggunakan perintah grep untuk menemukan teks dalam file. Saya harap Anda menikmati membaca ini dan silakan tinggalkan saran Anda di bagian komentar di bawah.


Linux
  1. Cara Menggunakan Perintah find Linux untuk Menemukan File

  2. Perintah Linux:Bagaimana cara 'menemukan' hanya file teks?

  3. Bagaimana menemukan file teks yang tidak mengandung teks di Linux?

  1. Cara menggunakan perintah grep Linux

  2. Bagaimana cara menemukan semua file yang berisi teks tertentu di Linux?

  3. Bagaimana cara menggunakan perintah find untuk menghapus file yang cocok dengan pola?

  1. Cara Menggunakan Perintah grep Di Linux/UNIX

  2. Bagaimana Menemukan Semua File Yang Tidak Mengandung String Teks?

  3. Bagaimana Menemukan Banyak String Dalam File??