Aku ingin berjalan-jalan melalui tentang perbedaan antara grep
, pgrep
, egrep
, dan fgrep
dan bagaimana saya akan menggunakannya.
Aku ingin berjalan-jalan melalui tentang perbedaan antara grep
, pgrep
, egrep
, dan fgrep
dan bagaimana saya akan menggunakannya.
Jawaban:
grep adalah akronim yang merupakan kependekan dari "Global Regular Expressions Print". grep adalah program yang memindai file tertentu atau file per baris, mengembalikan baris yang berisi pola. Pola adalah ekspresi yang menentukan serangkaian string dengan menafsirkan karakter sebagai meta-karakter. Misalnya karakter meta tanda bintang (*) ditafsirkan sebagai makna "nol atau lebih dari elemen sebelumnya". Ini memungkinkan pengguna untuk mengetik serangkaian karakter pendek dan karakter meta ke dalam perintah grep agar komputer menunjukkan kepada kita baris apa yang cocok dengan file.
Perintah grep standar terlihat seperti:
grep <flags> '<regular expression>' <filename>
grep mencetak hasil pencarian ke layar (stdout) dan mengembalikan nilai keluar berikut:
0 A match was found.
1 No match was found.
>1 A syntax error was found or a file was inaccessible
(even if matches were found).
Beberapa flag umum adalah: -c
untuk menghitung jumlah kecocokan yang berhasil dan tidak mencetak kecocokan yang sebenarnya, -i
untuk membuat case pencarian tidak sensitif, -n
untuk mencetak nomor baris sebelum setiap print cocok, -v
untuk mengambil pelengkap dari ekspresi reguler (yaitu mengembalikan garis yang tidak cocok), dan -l
untuk mencetak nama file file dengan garis yang cocok dengan ekspresi.
egrep adalah akronim yang merupakan singkatan dari "Extended Global Regular Expressions Print".
'E' dalam egrep berarti memperlakukan pola sebagai ekspresi reguler. "Extended Regular Expressions" disingkat 'ERE' diaktifkan di egrep. egrep (yang sama dengan grep -E
) memperlakukan +
, ?
, |
, (
, dan )
sebagai meta-karakter.
Dalam ekspresi reguler dasar (dengan grep), meta-karakter ?
, +
, {
, |
, (
, dan )
kehilangan makna khusus mereka. Jika Anda ingin grep untuk mengobati karakter ini sebagai meta-karakter, melarikan diri mereka \?
, \+
, \{
, \|
, \(
, dan \)
.
Misalnya, di sini grep menggunakan persamaan reguler dasar di mana plus diperlakukan secara literal, setiap baris dengan plus di dalamnya dikembalikan.
grep "+" myfile.txt
egrep di sisi lain memperlakukan "+" sebagai karakter meta dan mengembalikan setiap baris karena plus ditafsirkan sebagai "satu atau lebih kali".
egrep "+" myfile.txt
Di sini setiap baris dikembalikan karena +
diperlakukan oleh egrep sebagai karakter meta. grep normal akan mencari hanya baris dengan literal +
.
fgrep adalah singkatan dari "Fixed-string Global Regular Expressions Print".
fgrep (yang sama dengan grep -F) adalah tetap atau cepat grep dan berperilaku sebagai grep tetapi TIDAK mengenali meta-karakter ekspresi reguler sebagai istimewa. Pencarian akan selesai lebih cepat karena hanya memproses string sederhana daripada pola yang rumit.
Misalnya, jika saya ingin mencari .bash_profile saya untuk titik literal (.) Maka menggunakan grep akan sulit karena saya harus melarikan diri dari titik karena titik adalah karakter meta yang berarti 'wild-card, sembarang karakter tunggal':
grep "." myfile.txt
Perintah di atas mengembalikan setiap baris myfile.txt. Lakukan ini sebagai gantinya:
fgrep "." myfile.txt
Maka hanya garis-garis yang memiliki literal '.' di dalamnya dikembalikan. fgrep membantu kita tidak repot-repot keluar dari karakter meta kita.
pgrep adalah akronim yang merupakan singkatan dari "Process-ID Global Regular Expressions Print".
pgrep melihat melalui proses yang sedang berjalan dan mencantumkan ID proses yang cocok dengan kriteria seleksi untuk stdout. pgrep sangat berguna ketika semua yang ingin Anda ketahui adalah proses id integer dari suatu proses. Misalnya, jika saya hanya ingin mengetahui ID proses dari proses mysql saya, saya akan menggunakan perintah pgrep mysql
yang akan mengembalikan ID proses seperti 7312.
pgrep
manual : Nama proses yang digunakan untuk pencocokan terbatas pada 15 karakter yang ada di output dari / proc / pid / stat . Gunakan opsi -f untuk mencocokkan dengan baris perintah lengkap, / proc / pid / cmdline .