GNU/Linux >> Belajar Linux >  >> Linux

Grep Regex:Panduan Lengkap

Pendahuluan

grep perintah (kependekan dari G global R biasa E ekspresi P rint) adalah alat pemrosesan teks yang kuat untuk mencari melalui file dan direktori.

Saat grep digabungkan dengan regex (reg ular mantan pressions), pencarian lanjutan dan pemfilteran output menjadi sederhana. Administrator sistem, pengembang, dan pengguna biasa mendapat manfaat dari menguasai regex dengan grep memerintah.

Panduan ini mengajarkan Anda cara grep dengan regex melalui contoh.

Prasyarat

  • Akses ke terminal/baris perintah.
  • File teks untuk ditelusuri. Contoh menggunakan .bashrc berkas.
  • Penggunaan perintah grep dasar.

Grep Ekspresi Reguler

Sintaks untuk grep perintah menyertakan ekspresi reguler dalam format berikut:

grep [regex] [file]

Ekspresi reguler adalah pernyataan sederhana yang membantu memfilter data dan file. Banyak perintah Linux, seperti perintah awk atau perintah sed, juga menggunakan ekspresi reguler untuk menemukan dan memanipulasi informasi.

Dua tipe karakter umum membentuk pernyataan regex:

  • Literal , yang merupakan karakter teks standar.
  • Spesial karakter atau metakarakter memiliki arti khusus kecuali diloloskan dengan garis miring terbalik (\ ).

grep perintah menawarkan tiga opsi sintaks regex:

1. Ekspresi Reguler Dasar (BRE )

2. Ekspresi Reguler Diperpanjang (ERE )

3. Ekspresi Reguler yang Kompatibel dengan Mutiara (PCRE )

Secara default, grep menggunakan BRE sintaks.

Contoh Regex Grep

Jalankan perintah berikut untuk menguji cara kerja grep regex:

grep if .bashrc

Regex mencari string karakter. Hasilnya menunjukkan semua contoh di mana huruf i muncul diikuti oleh f di .bashrc mengajukan. Oleh karena itu, output menyoroti hasil berikut:

  • jika
  • eljika
  • tidakjika y
  • identitasjika ying

Perintah hanya mengembalikan baris yang cocok.

Cara Menggunakan Regex Dengan Grep

Regex menawarkan banyak kemungkinan untuk menyaring pencarian dengan grep . Di bawah ini adalah beberapa contoh umum yang menjelaskan sintaks dan logika dasar. Gabungkan kecocokan untuk membuat pernyataan ekspresi reguler yang kompleks.

Kecocokan Harfiah

Pencocokan literal melakukan pencocokan tepat untuk string karakter yang ditentukan. Contoh ekspresi sebelumnya untuk if menunjukkan kecocokan literal.

Pencarian peka huruf besar/kecil. Perintah berikut mengembalikan hasil yang berbeda dari contoh sebelumnya:

grep If .bashrc

Untuk mencari beberapa kata, tambahkan tanda kutip:

grep "if the" .bashrc

Menghilangkan tanda kutip memperlakukan kata kedua sebagai file atau lokasi.

Pertandingan Jangkar

Pencocokan jangkar menentukan lokasi garis dalam pencarian. Ada dua jenis jangkar:

  • Tanda sisipan (^ ) menelusuri garis kecocokan yang dimulai dengan ekspresi yang disediakan.
  • Tanda dolar ($ ) mencari baris kecocokan yang diakhiri dengan literal yang disediakan.

Misalnya, untuk mencocokkan baris yang dimulai dengan kata alias di .bashrc file, gunakan:

grep ^alias .bashrc

Pencarian tidak menampilkan garis dengan tab atau spasi sebelum kata.

Untuk mencocokkan baris yang diakhiri dengan kata then di .bashrc file, jalankan:

grep then$ .bashrc

Gunakan kedua jangkar untuk membuat pernyataan ekspresi reguler yang mencari satu kata atau pernyataan dalam satu baris:

grep ^esac$ .bashrc

Gunakan hanya jangkar untuk menemukan baris kosong dalam file. Tambahkan -n opsi untuk menampilkan nomor baris dalam output:

grep -n ^$ .bashrc

Tanpa -n pilihan, output kosong.

Cocokkan Semua Karakter

Periode (. ) metakarakter regex cocok dengan karakter apa pun sebagai pengganti tanda. Misalnya:

grep r.o .bashrc

Output menunjukkan semua contoh huruf r , diikuti oleh karakter apa saja, diikuti oleh o . Titik dapat berupa karakter apa saja, seperti huruf, angka, tanda, atau spasi.

Tambahkan beberapa titik untuk menunjukkan beberapa tempat penampung karakter:

grep r..t .bashrc

Gabungkan dengan pencocokan jangkar untuk membuat pernyataan regex yang kompleks. Misalnya:

grep ..t$ .bashrc

Pernyataan menemukan semua baris dengan dua karakter apa pun yang diikuti oleh huruf t di akhir.

Ekspresi Bracket

Ekspresi braket memungkinkan pencocokan beberapa karakter atau rentang karakter pada suatu posisi. Misalnya, untuk mencocokkan semua baris yang berisi and atau end di .bashrc file, gunakan pola berikut:

grep [ae]nd .bashrc

Ekspresi tanda kurung memungkinkan pengecualian karakter dengan menambahkan tanda sisipan (^ ) tanda. Misalnya, untuk mencocokkan semuanya kecuali and atau end , gunakan:

grep [^ae]nd .bashrc

Gunakan ekspresi kurung untuk menentukan rentang karakter dengan menambahkan tanda hubung (- ) antara huruf pertama dan terakhir. Misalnya, cari semua contoh huruf kapital:

grep [A-Z] .bashrc

Gabungkan ekspresi tanda kurung dengan pencocokan jangkar untuk menemukan semua kata yang dimulai dengan huruf kapital:

grep ^[A-Z] .bashrc

Ekspresi braket memungkinkan beberapa rentang. Misalnya, cocokkan semua karakter non-huruf dengan:

grep [^a-zA-Z] .bashrc

Outputnya menyoroti angka dan karakter, mengabaikan semua huruf.

Kelas Karakter

Grep menawarkan kelas karakter standar sebagai fungsi standar untuk menyederhanakan ekspresi braket. Di bawah ini adalah tabel yang menguraikan beberapa kelas dan persamaan ekspresi kurung.

Sintaks Deskripsi Setara
[[:alnum:]] Semua huruf dan angka. "[0-9a-zA-Z]"
[[:alpha:]] Semua huruf. "[a-zA-Z]"
[[:blank:]] Spasi dan tab. [CTRL+V<TAB> ]
[[:digit:]] Digit 0 hingga 9. [0-9]
[[:lower:]] Huruf kecil. [a-z]
[[:punct:]] Tanda baca dan karakter lainnya. "[^a-zA-Z0-9]"
[[:upper:]] Huruf besar. [A-Z]
[[:xdigit:]] Digit heksadesimal. "[0-9a-fA-F]"

Daftar lengkap kelas karakter grep ada di manual grep.

Quantifier

Quantifier adalah metakarakter yang menentukan jumlah kemunculan. Tabel berikut menunjukkan setiap sintaks grep quantifier dengan deskripsi singkat.

Sintaks Deskripsi
* Tidak ada kecocokan atau lebih.
? Nol atau satu kecocokan.
+ Satu atau beberapa kecocokan.
{n} n cocok.
{n,} n atau lebih kecocokan.
{,m} Hingga m cocok.
{n,m} Dari n hingga m cocok.

* tanda cocok dengan pola nol kali atau lebih. Untuk mendemonstrasikan, jalankan perintah berikut:

grep m*and .bashrc

Dalam hal ini, * tanda cocok dengan huruf m nol atau lebih kali. Oleh karena itu "and , mand , mmand " semuanya cocok. Huruf m berulang beberapa kali bila diikuti oleh * tanda.

Untuk mencocokkan nol atau tepat satu kecocokan, gunakan ? tanda. Bungkus pernyataan dalam tanda kutip tunggal dan keluarkan karakter untuk menghindari interpretasi. Misalnya:

grep 'm\?and' .bashrc

Atau, gunakan ekspresi reguler yang diperluas untuk menghindari pelolosan:

grep -E 'm?and' .bashrc

Output menyoroti semua contoh and atau mand .

Gunakan pengukur rentang untuk menentukan jumlah pengulangan yang tepat. Misalnya, cari string dengan dua vokal:

grep '[aeiouAEIOU]\{2\}' .bashrc
grep -E '[aeiouAEIOU]{2}' .bashrc

Outputnya menyoroti semua kata dengan dua vokal.

Alternatif

Pergantian memungkinkan untuk menentukan kecocokan alternatif. Bungkus string alternatif dalam tanda kutip tunggal dan pisahkan masing-masing dengan karakter pipa yang lolos (\| ).

Misalnya, untuk mencari kata-kata bash atau alias di .bashrc file, gunakan:

grep 'bash\|alias' .bashrc

Atau, gunakan regex yang diperluas dan hilangkan karakter escape:

grep -E 'bash|alias' .bashrc

Output menyoroti kedua contoh string dalam file.

Pengelompokan

Ekspresi reguler memungkinkan pola pengelompokan menjadi satu item. Tempatkan grup dalam tanda kurung yang lolos untuk regex biasa, atau gunakan extended.

Misalnya, cari string bashrc dan buat rc karakter opsional:

grep 'bash\(rc\)\?' .bashrc
grep -E 'bash(rc)?' .bashrc

Output menyoroti semua contoh bashrc . Sejak rc adalah opsional, perintahnya juga cocok dengan kata bash .

Ekspresi Backslash Khusus

Perintah grep menawarkan beberapa ekspresi garis miring terbalik yang unik untuk pencocokan batas kata tingkat lanjut. Di bawah ini adalah tabel dengan contoh singkat untuk setiap jenis ekspresi.

Sintaks Contoh Cocok
(Teks tebal menunjukkan kecocokan)
\b '\band\b' dan
"dan "
\dan \
dan
dan
\B '\Band' _dan
_dan _
sdan
hdan y
\< '\ dan
"dan "
dan kamu
dan _
dan
dan
\> 'dan\>' dan
"dan"
sdan
_dan
dan
dan
\w '\wand' _dan
_dan _
tangan kamu
pasir
\W '\Wand' "dan "
/dan /
\s '\pasir' dan
dan
\S '\Pasir' _dan
"dan "
pasir
tangan kamu
_dan _
/dan /

Misalnya, gunakan \b batasan untuk menemukan kata yang bukan merupakan bagian dari kata lain:

grep '\bse[et]\b' .bashrc

Ekspresi menempatkan kata-kata see dan set . Batas memastikan isolasi kata.

Melarikan Diri dari Meta-Karakter

Melarikan diri dari meta-karakter memperlakukan karakter khusus sebagai literal. Misalnya, untuk mencari titik (.) di akhir baris, keluar dari meta-karakter:

grep '\.$' .bashrc

Tidak mengizinkan interpretasi karakter membantu saat mencari melalui kode sumber atau file konfigurasi.


Linux
  1. Panduan Lengkap untuk Menggunakan AsciiDoc di Linux

  2. Panduan Lengkap Pemula untuk LVM di Linux

  3. Regex (grep) untuk pencarian multi-baris diperlukan

  1. Apa itu Kubernetes? Panduan Lengkap

  2. Ekspresi Reguler di Grep (Regex)

  3. Cara Menginstal Void Linux:Panduan Langkah-demi-Langkah Lengkap

  1. Perintah Linux - Panduan Lengkap

  2. Panduan Lengkap untuk Memasang Linux di Chromebook

  3. Panduan Lengkap Untuk Menginstal OxygenOS Di OnePlus One Di Linux