Regular Expression - Grep
Apa itu grep
GREP adalah sebuah perintah di Linux yang biasanya digunakan oleh IT Engineer untuk tugas sehari-harinya. Bisa digunakan oleh seorang Software Engineer, Network Engineer, Data Engineer, Security Engineer dll. Atau siapapun yang membutuhkan pencarian atau penggantian kata dalam file atau proses di Linux.
Misalnya pencarian kata di dalam .log file, atau pencarian proses , atau memfilter hasil perintah Linux sebelumnya, dll.
Contoh
>>> cat activity.log | grep "activity 1"
>>> ps -ef | grep java
- Perintah pertama menfilter/menemukan posisi dalam file activity.log yang didalamnya terdapat kata ‘activity 1’.
- Perintah kedua menfilter/menemukan proses/program java apa saja yang sedang running saat ini.
GREP ini merupakan salah satu implementasi dari mesin Regular Expression. Singkatan dari grep ini sendiri adalah Global Regular Expression Printed.
Asal mula GREP
Asalnya dari perintah g/re/p di text editor ed editor di Unix (sebelum Linux berkembang). Ketika perintah ini dijalankan di ed text editor, maka akan mencari secara global text/kata yang ada di reguler expression nya dan mem-print baris yang memiliki kata tersebut.
Ed editor ini di buat oleh Kenneth Lane Thompson pada tahun 1969, yang juga developer dari Unix, dan juga mendesain mesin Regular Expression di Unix, juga mendevelop skema encoding UTF-8, dan terakhir sebagai salah satu pembuat bahasa pemrograman Go di Google.
Perkembangannya
Perintah grep juga mengalami perkembangan sesuai perkembangan dialek dari Regular Expressionnya.
Pada awalnya , hanya mengenal dialect BRE (Base Regular Expression) yang tidak mengenal \d, \S, \s dan beberapa notasi kelas karakter.
Akan tetapi versi grep yang terkini, sudah memiliki pilihan apakah akan memakai dialek Basic, Extended, atau PCRE (Perl Compatible Regular Expression). Link Regex Dialect
Experiment
Kalau kita coba execute grep –help, maka akan muncul
$ grep --help
Usage: grep [OPTION]... PATTERNS [FILE]...
Search for PATTERNS in each FILE.
Example: grep -i 'hello world' menu.h main.c
PATTERNS can contain multiple patterns separated by newlines.
Pattern selection and interpretation:
-E, --extended-regexp PATTERNS are extended regular expressions
-F, --fixed-strings PATTERNS are strings
-G, --basic-regexp PATTERNS are basic regular expressions
-P, --perl-regexp PATTERNS are Perl regular expressions
-e, --regexp=PATTERNS use PATTERNS for matching
-f, --file=FILE take PATTERNS from FILE
-i, --ignore-case ignore case distinctions in patterns and data
--no-ignore-case do not ignore case distinctions (default)
-w, --word-regexp match only whole words
-x, --line-regexp match only whole lines
-z, --null-data a data line ends in 0 byte, not newline
- grep -G untuk menggunakan Basic Regex.
- grep -E untuk menggunakan Extended Regex.
- grep -P untuk menggunakan Perl Compatible Regular Expression
mengenai dialek Regex bisa dilihat di Regex Dialect