Ben arasındaki farklar hakkında bir yürüyüş istiyorum grep
, pgrep
, egrep
ve fgrep
bunları nasıl kullanırım.
Ben arasındaki farklar hakkında bir yürüyüş istiyorum grep
, pgrep
, egrep
ve fgrep
bunları nasıl kullanırım.
Yanıtlar:
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: -c
başarılı eşleşme sayısını saymak ve gerçek eşleşmeleri yazdırmamak, -i
arama durumunu duyarsız hale getirmek, -n
her eşleşme çıktısından önce satır numarasını yazdırmak, -v
normal ifadenin tamamlayıcısını almak için eşleşmiyor), ve -l
ifadeyle eşleşen satırları olan dosyaların dosya adlarını yazdırmak için.
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 -E
davranı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, "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, "İş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 mysql
7312 gibi bir işlem kimliği döndüren komutu kullanırdım .
pgrep
kı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 .