Grep, pgrep, egrep, fgrep arasındaki fark nedir?


Yanıtlar:


85

Grep, pgrep, egrep ve fgrep (Linux) arasındaki farklar:

grep

grep, "Global Regular Expressions Print" anlamına gelen bir kısaltmadır. grep, belirli bir dosyayı veya dosyaları satır satır tarar ve bir desen içeren satırları döndüren bir programdır. Desen, karakterleri meta karakter olarak yorumlayarak bir dizi dizeyi belirten bir ifadedir. Örneğin yıldız meta karakteri (*), "önceki öğenin sıfır veya daha fazlası" anlamına gelir. Bu, bilgisayarın bize hangi dosyaların hangi satırlarda eşleştiğini göstereceğini göstermek için bir grep komutuna kısa bir dizi karakter ve meta karakter girmesini sağlar.

Standart grep komutu şöyle görünür:

grep <flags> '<regular expression>' <filename>

grep, arama sonuçlarını ekrana (stdout) yazdırır ve aşağıdaki çıkış değerlerini döndürür:

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).

Bazı genel bayraklar şunlardır: -cbaşarılı eşleşme sayısını saymak ve gerçek eşleşmeleri yazdırmamak, -iarama durumunu duyarsız hale getirmek, -nher eşleşme çıktısından önce satır numarasını yazdırmak, -vnormal ifadenin tamamlayıcısını almak için eşleşmiyor), ve -lifadeyle eşleşen satırları olan dosyaların dosya adlarını yazdırmak için.

egrep

egrep, "Genişletilmiş Genel Düzenli İfade Baskısı" anlamına gelen bir kısaltmadır.

Egrep'deki 'E', kalıbı düzenli ifade olarak ele almak anlamına gelir. 'ERE' kısaltılmış "Genişletilmiş Normal İfadeler" egrep biçiminde etkindir. (aynıdır egrep grep -Edavranır) +, ?, |, (, ve )meta-karakter.

Temel düzenli ifadeleri (grep ile), meta-karakterleri ?, +, {, |, (, ve )onların özel bir anlamı kaybederler. Bunları kaçış, meta karakterler olarak bu karakterleri tedavi etmek grep istiyorsanız \?, \+, \{, \|, \(ve, \).

Örneğin, burada grep, artı değerin tam anlamıyla ele alındığı temel düzenli ifadeleri kullanır, içinde artı olan herhangi bir satır döndürülür.

grep "+" myfile.txt

Öte yandan egrep, "+" 'yı meta karakter olarak ele alır ve her satırı döndürür, çünkü artı "bir veya daha fazla kez" olarak yorumlanır.

egrep "+" myfile.txt

Burada her satır döndürülür çünkü +egrep tarafından meta karakter olarak ele alınmıştır. normal grep, yalnızca değişmezi olan satırları arardı +.

fgrep

fgrep, "Sabit Dize Global Normal İfadeler Yazdır" anlamına gelen bir kısaltmadır.

fgrep (grep -F ile aynı) sabit veya hızlı grep ve grep gibi davranır, ancak herhangi bir normal ifade meta karakterini özel olarak tanımaz. Arama daha hızlı tamamlanır çünkü karmaşık bir desen yerine yalnızca basit bir dize işler.

Örneğin, .bash_profile'imi değişmez bir nokta için (.) Aramak isteseydim grep kullanmak zor olurdu çünkü noktadan kaçmak zorunda kalacağım çünkü nokta 'joker karakter, herhangi bir tek karakter' anlamına gelen bir meta karakterdir:

grep "." myfile.txt

Yukarıdaki komut myfile.txt dosyasının her satırını döndürür. Bunu yerine yapın:

fgrep "." myfile.txt

O zaman sadece bir değişmeze sahip satırlar. İçlerinde iade edilir. fgrep, meta karakterlerimizden kaçmamıza yardım etmemize yardımcı olur.

pgrep

pgrep, "İşlem Kimliği Küresel Düzenli İfadeler Yazdır" anlamına gelen bir kısaltmadır.

pgrep şu anda çalışan işlemlere bakar ve seçim kriterlerini stdout ile eşleşen işlem kimliklerini listeler. pgrep, bilmek istediğiniz tüm işlemin işlem kimliği tamsayısı olduğunda kullanışlıdır. Örneğin, mysql sürecimin sadece işlem kimliğini bilmek isteseydim, pgrep mysql7312 gibi bir işlem kimliği döndüren komutu kullanırdım .


Kaynaktan pgrepkılavuzu : eşleşmesi için kullanılan işlem, adı çıkışında mevcut olan 15 karakter ile sınırlıdır / Proc / PID / Stat . Komut satırı, / proc / pid / cmdline ile eşleşmek için -f seçeneğini kullanın .
Pablo A
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.