Soal 1Simbol mana yang cocok dengan awal baris dalam ekspresi reguler?
Ekspresi Reguler Dasar — Pola grep
Latih ekspresi reguler dasar grep — 5 simbol ^/$/./*/[], regex extended dengan -E, dan -o untuk mencetak hanya bagian yang cocok — dengan mengekstrak dari file teks.
Alat untuk menguji regex-mu
Kamu juga bisa mencoba pola-pola dalam artikel ini di Penguji Regex berbasis browser. Alat ini menunjukkan di mana polamu cocok dengan teks masukanmu, langsung saat itu juga.
Ekspresi Reguler Dasar — ^ $ . * []
Ekspresi reguler adalah cara untuk menggambarkan sebuah pola dalam teks. grep menafsirkan string yang kamu cari sebagai ekspresi reguler, sehingga kamu bisa menemukan baris berdasarkan kondisi seperti 'diawali karakter ini' atau 'satu karakter apa pun di sini', bukan hanya dengan string tetap. 5 simbol yang perlu kamu pelajari untuk ekspresi reguler dasar adalah ^, $, ., *, dan [].
^ dan $ adalah anchor untuk awal dan akhir sebuah baris. . cocok dengan satu karakter apa pun, dan * berarti nol atau lebih pengulangan dari karakter sebelumnya. [abc] cocok dengan satu karakter apa pun di dalam kurung, dan [a-z] cocok dengan satu karakter huruf kecil berdasarkan rentang. Gabungkan keduanya untuk pencarian yang fleksibel.
^ adalah awal baris, $ akhir baris, dan . satu karakter apa pun.| Simbol | Arti | Contoh | Arti contohnya |
|---|---|---|---|
^ | Cocok dengan awal baris | grep '^c' f | Temukan baris yang diawali c |
$ | Cocok dengan akhir baris | grep 't$' f | Temukan baris yang diakhiri t |
. | Cocok dengan satu karakter apa pun | grep 'c.t' f | Satu karakter apa pun antara c dan t (cat/cot) |
* | Nol atau lebih dari karakter sebelumnya | grep 'ab*c' f | Berapa pun jumlah b antara a dan c (ac/abc) |
[abc] | Cocok dengan salah satu karakter | grep '[cb]at' f | Temukan cat atau bat |
[a-z] | Satu karakter apa pun dalam rentang | grep '[a-z]at' f | Satu huruf kecil + at (cat/bat) |
\| | Cocok salah satu (atau) | grep 'cat\|dog' f | Baris yang mengandung cat atau dog |
echo -e 'cat\ncot\ndog' > words.txt # buat bahan
grep '^c' words.txt # cat dan cot, yang diawali c
grep 't$' words.txt # cat dan cot, yang diakhiri t
grep 'c.t' words.txt # cat dan cot yang cocok c?t
Pengulangan dan Kelas Karakter — * dan []
* berarti nol atau lebih pengulangan dari karakter sebelumnya. ab*c cocok dengan baris yang punya nol atau lebih b, seperti ac, abc, dan abbc. [] cocok dengan satu karakter apa pun di dalam kurung, sehingga [cb]at menangkap baik cat maupun bat. Menulis rentang seperti [a-z] mewakili satu karakter huruf kecil.
echo -e 'ac\nabc\nabbc\naxc' > rep.txt # buat bahan
grep 'ab*c' rep.txt # ac abc abbc, dengan nol atau lebih b
echo -e 'cat\nbat\nrat' > cls.txt # buat bahan
grep '[cb]at' cls.txt # 2 baris cat dan bat
Atau — Mencocokkan Salah Satu dengan \|
Dalam ekspresi reguler dasar, | (atau) diperlakukan sebagai karakter biasa apa adanya.
Untuk menyatakan alternasi, tambahkan backslash dan tulis \|, sehingga grep 'cat\|dog' cocok dengan baris yang mengandung cat atau dog.
Dengan grep -E, yang akan kamu pelajari nanti, kamu bisa menulis | langsung alih-alih \|.
echo -e 'cat\ndog\nfox' > sel.txt # buat bahan
grep 'cat\|dog' sel.txt # 2 baris yang mengandung cat atau dog
Regex Extended dan Mencetak yang Cocok — grep -E / grep -o
Dalam ekspresi reguler dasar, + | ( ) perlu di-escape, seperti \+ \| \( \), tetapi dengan grep -E kamu bisa menulisnya langsung. grep -E mengaktifkan ekspresi reguler extended (ERE). Sekarang kamu bisa menulis + (satu atau lebih), | (atau), dan () (grup) langsung, yang sebelumnya perlu di-escape dalam regex dasar. grep -E 'cat|dog' cocok dengan baris yang mengandung cat atau dog.
grep -o mencetak hanya substring yang cocok, bukan seluruh baris yang cocok. Jika ada beberapa kecocokan dalam satu baris, ia mencetak masing-masing pada baris terpisah. Ini berguna saat kamu ingin menarik hanya bagian yang cocok dari sebuah log dan menghitungnya.
| Simbol | Arti | Contoh | Arti contohnya |
|---|---|---|---|
+ | Satu atau lebih dari sebelumnya | grep -E 'ab+c' f | Satu atau lebih b antara a dan c (abc/abbc) |
| | Cocok salah satu (atau) | grep -E 'cat|dog' f | Baris yang mengandung cat atau dog |
() | Pengelompokan | grep -E '(ab)+' f | Satu atau lebih pengulangan ab (ab/abab) |
-E mengaktifkan regex extended, dan -o mencetak hanya bagian yang cocok.| Cara menulisnya | Arti | Contoh |
|---|---|---|
grep -E | Aktifkan regex extended (ERE) | grep -E 'cat|dog' f |
grep -o | Cetak hanya bagian yang cocok | grep -o 'cat' f |
Regex yang lebih lanjut
grep -P (regex kompatibel-Perl) adalah ekstensi GNU grep. Dalam kursus ini kamu mempelajari ekspresi reguler dasar (^ $ . * []), grep -E untuk mengaktifkan regex extended, dan grep -o untuk mencetak hanya yang cocok. Semua ini bekerja dengan cara yang sama di Linux mana pun.
echo -e 'cat\ndog\nfox' > animals.txt # buat bahan
grep -E 'cat|dog' animals.txt # 2 baris cat atau dog
echo -e 'ac\nabc\nabbc' > plus.txt # buat bahan
grep -E 'ab+c' plus.txt # abc abbc, dengan satu atau lebih b
echo -e 'cat cat dog' > line.txt # buat bahan
grep -o cat line.txt # cetak setiap cat yang cocok pada barisnya sendiri
Memfilter Output Perintah — | grep
grep bisa mencari bukan hanya file yang diberikan sebagai argumen tetapi juga output perintah lain yang diteruskan lewat pipe |.
Salurkan hasil ls atau cat ke | grep untuk mempersempitnya hanya ke baris yang kamu butuhkan.
ls cmds | grep '^c' menampilkan hanya nama yang diawali c dari daftar direktori cmds, dan cat file | grep word memfilter isi file dengan cara yang sama.
grep dengan | untuk mempersempitnya hanya ke baris yang cocok. cmds adalah direktori bahan kecil yang kamu buat sendiri.mkdir -p cmds # direktori bahan kecil
touch cmds/cat cmds/cut cmds/sort # siapkan 3 nama
ls cmds | grep '^c' # cat dan cut, yang diawali c
echo -e 'apple\nbanana\ncherry' > fruit.txt # buat bahan
cat fruit.txt | grep an # hanya banana, yang mengandung an
Cek Pemahaman
Jawab setiap pertanyaan satu per satu.
Soal 2Apa yang diwakili * dalam grep 'ab*c' f?
Soal 3Apa yang dicetak saat kamu menjalankan grep -o cat line.txt?