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 \ |
\B | '\Band' | _dan _dan _ sdan hdan y |
\< | '\dan | "dan " dan kamu dan _ |
\> | 'dan\>' | dan "dan" sdan _dan |
\w | '\wand' | _dan _dan _ tangan kamu pasir |
\W | '\Wand' | "dan " /dan / |
\s | '\pasir' | |
\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.