İsim
grep, egrep, fgrep, rgrep, bzgrep, bzegrep, bzfgrep, zgrep, zegrep, zfgrep – dosya deseni arayıcı
Özet
grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C num] [-e pattern] [-f file]
[--binary-files=value] [--color[=when]] [--colour[=when]] [--context=num] [--label]
[--line-buffered] [--null] [pattern] [file ...]
Açıklama
grep aracı, verilen herhangi bir girdi dosyasını arayarak bir veya daha fazla desenle eşleşen satırları seçer. Varsayılan olarak bir desen, desendeki düzenli ifade (RE), sondaki satır sonu karakteri (newline) hariç tutulmuş girdi satırıyla eşleştiğinde o satırla eşleşir. Boş bir ifade her satırla eşleşir. Desenlerden en az biriyle eşleşen her girdi satırı standart çıktıya yazılır.
grep, basit desenler ve temel düzenli ifadeler (BRE) için kullanılır; egrep ise genişletilmiş düzenli ifadeleri (ERE) işleyebilir. Düzenli ifadeler hakkında daha fazla bilgi için re_format(7) sayfasına bakın. fgrep, hem grep hem de egrep komutundan daha hızlıdır, ancak yalnızca sabit desenleri işleyebilir (yani, düzenli ifadeleri yorumlamaz). Desenler bir veya daha fazla satırdan oluşabilir, bu da desen satırlarından herhangi birinin girdinin bir bölümüyle eşleşmesine olanak tanır.
zgrep, zegrep ve zfgrep sırasıyla grep, egrep ve fgrep gibi davranır, ancak compress(1) veya gzip(1) sıkıştırma araçlarıyla sıkıştırılmış girdi dosyalarını kabul eder. bzgrep, bzegrep ve bzfgrep sırasıyla grep, egrep ve fgrep gibi davranır, ancak bzip2(1) sıkıştırma aracıyla sıkıştırılmış girdi dosyalarını kabul eder.
Aşağıdaki seçenekler kullanılabilir:
-A num, --after-context=num Her eşleşmeden sonra num satır kadar takip eden bağlam satırını yazdırır. Ayrıca -B ve -C seçeneklerine bakın.
-a, --text Tüm dosyaları ASCII metni olarak ele alır. Normal şartlarda dosyalar ikili (binary) karakterler içeriyorsa grep yalnızca "Binary file ... matches" (İkili dosya ... eşleşiyor) yazdırır. Bu seçeneğin kullanılması, grep'i belirtilen desenle eşleşen satırları çıktı olarak vermeye zorlar.
-B num, --before-context=num Her eşleşmeden önce num satır kadar öndeki bağlam satırını yazdırır. Ayrıca -A and -C seçeneklerine bakın.
-b, --byte-offset Eşleşen bir desenin bayt cinsinden ofseti (konumu), ilgili eşleşen satırın önünde görüntülenir.
-C num, --context=num Her eşleşmeyi çevreleyen num satır kadar öndeki ve takip eden bağlam satırını yazdırır. Ayrıca -A ve -B seçeneklerine bakın.
-c, --count Standart çıktıya yalnızca seçilen satırların sayısı yazılır.
--colour=[when], --color=[when] Eşleşen metni GREP_COLOR çevre değişkeninde saklanan ifade ile vurgular. when için olası değerler "never" (asla), "always" (her zaman) ve "auto" (otomatik) şeklindedir.
-D action, --devices=action Aygıtlar, FIFO'lar ve soketler için talep edilen eylemi belirtir. Varsayılan eylem "read" (oku) şeklindedir, bu da onların normal dosyalar gibi okunduğu anlamına gelir. Eylem "skip" (atla) olarak ayarlanırsa, aygıtlar sessizce atlanır.
-d action, --directories=action Dizinler için talep edilen eylemi belirtir. Varsayılan olarak "read" (oku) şeklindedir, yani dizinler normal dosyalarla aynı şekilde okunur. Diğer olası değerler, dizinleri sessizce göz ardı etmek için "skip" (atla) ve dizinleri özyinelemeli (recursive) olarak okumak için -R ve -r seçeneğiyle aynı etkiye sahip olan "recurse" (özyinele) eylemidir.
-E, --extended-regexp Deseni genişletilmiş bir düzenli ifade olarak yorumlar (yani, grep'i egrep gibi davranmaya zorlar).
-e pattern, --regexp=pattern Girdinin araması sırasında kullanılacak bir deseni belirtir: belirtilen desenlerden herhangi biriyle eşleşen bir girdi satırı seçilir. Bu seçenek en çok, birden fazla desen belirtmek için birden fazla -e seçeneği kullanıldığında veya bir desen tire işareti ('-') ile başladığında yararlıdır.
--exclude pattern Belirtilirse, verilen dosya adı deseniyle eşleşen dosyaları aramadan hariç tutar. --exclude ve --include desenlerinin verilen sırayla işlendiğini unutmayın. Bir ad birden fazla desenle eşleşirse, en son eşleşen kural geçerli olur. Herhangi bir --include deseni belirtilmemişse, hariç tutulmayan tüm dosyalar aranır. Desenler, yalnızca dosya adı bileşeniyle değil, belirtilen tam yolla eşleştirilir.
--exclude-dir pattern Eğer -R belirtilmişse, verilen dosya adı deseniyle eşleşen dizinleri aramadan hariç tutar. --exclude-dir ve --include-dir desenlerinin verilen sırayla işlendiğini unutmayın. Bir ad birden fazla desenle eşleşirse, en son eşleşen kural geçerli olur. Herhangi bir --include-dir deseni belirtilmemişse, hariç tutulmayan tüm dizinler aranır.
-F, --fixed-strings Deseni bir sabit diziler kümesi olarak yorumlar (yani, grep'i fgrep gibi davranmaya zorlar).
-f file, --file=file Dosyadan satır sonu karakterleriyle ayrılmış bir veya daha fazla desen okur. Boş desen satırları her girdi satırıyla eşleşir. Satır sonu karakterleri desenin bir parçası olarak kabul edilmez. Eğer dosya boşsa hiçbir şey eşleşmez.
-G, --basic-regexp Deseni temel bir düzenli ifade olarak yorumlar (yani, grep'i geleneksel grep gibi davranmaya zorlar).
-H Çıktı satırlarıyla birlikte her zaman dosya adı başlıklarını yazdırır.
-h, --no-filename Çıktı satırlarıyla birlikte asla dosya adı başlıklarını (yani dosya adlarını) yazdırmaz.
--help Kısa bir yardım mesajı yazdırır.
-I İkili (binary) dosyaları göz ardı eder. Bu seçenek, "--binary-files=without-match" seçeneğine eşdeğerdir.
-i, --ignore-case Büyük/küçük harfe duyarsız eşleştirme gerçekleştirir. Varsayılan olarak grep büyük/küçük harfe duyarlıdır.
--include pattern Belirtilirse, yalnızca verilen dosya adı deseniyle eşleşen dosyalar aranır. --include ve --exclude desenlerinin verilen sırayla işlendiğini unutmayın. Bir ad birden fazla desenle eşleşirse, en son eşleşen kural geçerli olur. Desenler, yalnızca dosya adı bileşeniyle değil, belirtilen tam yolla eşleştirilir.
--include-dir pattern Eğer -R belirtilmişse, yalnızca verilen dosya adı deseniyle eşleşen dizinler aranır. --include-dir ve --exclude-dir desenlerinin verilen sırayla işlendiğini unutmayın. Bir ad birden fazla desenle eşleşirse, en son eşleşen kural geçerli olur.
-J, --bz2decompress Metni aramadan önce bzip2(1) ile sıkıştırılmış dosyayı açar.
-L, --files-without-match Yalnızca seçilen satırları içermeyen dosyaların adları standart çıktıya yazılır. Yol adları, aranan dosya başına bir kez listelenir. Standart girdi aranıyorsa, bir --label belirtilmediği sürece "(standard input)" (standart girdi) ifadesi yazılır.
-l, --files-with-matches Yalnızca seçilen satırları içeren dosyaların adları standart çıktıya yazılır. grep, aramaları potansiyel olarak daha az maliyetli hale getirmek için bir dosyayı yalnızca bir eşleşme bulunana kadar arar. Yol adları, aranan dosya başına bir kez listelenir. Standart girdi aranıyorsa, bir --label belirtilmediği sürece "(standard input)" (standart girdi) ifadesi yazılır.
--label Normalde bir dosya adının yazdırılacağı yerlerde "(standard input)" (standart girdi) yerine kullanılacak etiketi belirtir. Bu seçenek -H, -L ve -l seçenekleri için geçerlidir.
--mmap Girdiyi okumak için read(2) yerine mmap(2) kullanır; bu bazı durumlarda daha iyi performans sağlayabilir ancak belirsiz davranışlara neden olabilir.
-M, --lzma Metni aramadan önce LZMA ile sıkıştırılmış dosyayı açar.
-m num, --max-count=num num kadar eşleşmeden sonra dosyayı okumayı durdurur.
-n, --line-number Her çıktı satırının önüne, dosyada 1. satırdan başlayan göreli satır numarası eklenir. Satır numarası sayacı, işlenen her dosya için sıfırlanır. Eğer -c, -L, -l veya -q belirtilmişse bu seçenek göz ardı edilir.
--null Dosya adından sonra bir sıfır baytı (null byte) yazdırır.
-O Eğer -R belirtilmişse, sembolik bağlantıları yalnızca komut satırında açıkça listelenmişlerse takip eder. Varsayılan davranış sembolik bağlantıları takip etmemektir.
-o, --only-matching Satırların yalnızca eşleşen kısmını yazdırır.
-p Eğer -R belirtilmişse, hiçbir sembolik bağlantı takip edilmez. Varsayılan davranış budur.
-q, --quiet, --silent Sessiz mod: normal çıktıyı bastırır. grep, aramaları potansiyel olarak daha az maliyetli hale getirmek için bir dosyayı yalnızca bir eşleşme bulunana kadar arar.
-R, -r, --recursive Listelenen alt dizinleri özyinelemeli olarak arar (yani, grep'i rgrep gibi davranmaya zorlar).
-S Eğer -R belirtilmişse, tüm sembolik bağlantılar takip edilir. Varsayılan davranış sembolik bağlantıları takip etmemektir.
-s, --no-messages Sessiz mod. Var olmayan ve okunamayan dosyalar göz ardı edilir (yani, hata mesajları bastırılır).
-U, --binary İkili (binary) dosyaları arar, ancak onları yazdırmaya çalışmaz.
-u Bu seçeneğin hiçbir etkisi yoktur ve yalnızca GNU grep ile uyumluluk amacıyla sağlanmıştır.
-V, --version Sürüm bilgisini görüntüler ve çıkar.
-v, --invert-match Eşleşmeyi tersine çevirir: seçilen satırlar, belirtilen desenlerden hiçbirine uymayan satırlardır.
-w, --word-regexp İfade bir sözcük olarak aranır (sanki '[[:<:]]' ve '[[:>:]]' ile çevrelenmiş gibi; re_format(7) sayfasına bakın). Eğer -x seçeneği de belirtilmişse bu seçeneğin hiçbir etkisi yoktur.
-x, --line-regexp Yalnızca sabit bir dizinin veya düzenli ifadenin tamamıyla eşleşen girdi satırları eşleşen satırlar olarak kabul edilir.
-y -i seçeneğine eşdeğerdir. Kullanımdan kaldırılmıştır.
-z, --null-data Girdi ve çıktı verilerini satır sonu karakteri yerine sıfır baytı ile sonlandırılmış satır dizileri olarak ele alır.
-X, --xz Metni aramadan önce xz(1) ile sıkıştırılmış dosyayı açar.
-Z, --decompress grep'i zgrep gibi davranmaya zorlar.
--binary-files=value İkili dosyaların aranmasını ve yazdırılmasını kontrol eder. Seçenekler şunlardır: binary (varsayılan) İkili dosyaları arar ancak yazdırmaz. without-match İkili dosyaları aramaz. text Tüm dosyaları metin olarak ele alır.
--line-buffered Çıktıyı satır arabelleğine almaya (line buffered) zorlar. Varsayılan olarak, standart çıktı bir uçbirim olduğunda çıktı satır arabelleğine alınır, aksi takdirde blok arabelleğine alınır.
Herhangi bir dosya argümanı belirtilmemişse standart girdi kullanılır. Ayrıca, standart girdiden okumak için dosya adı yerine "-" kullanılabilir. Buna hem -f hem de dosya argümanları dahildir.
Çevre
GREP_OPTIONS Argüman listesinin başına yerleştirilecek varsayılan seçenekleri belirtmek için kullanılabilir. GNU grep davranışının aksine, ters eğik çizgi ile kaçış (backslash-escaping) desteklenmez.
Çıkış Durumu
grep aracı aşağıdaki değerlerden biriyle çıkar:
0 Bir veya daha fazla satır seçildi. 1 Hiçbir satır seçilmedi.
1 Bir hata oluştu.
Örnekler
- Bir dosyadaki 'patricia' deseninin tüm geçişlerini bulma:
$ grep 'patricia' myfile
- Yukarıdaki ile aynı ancak yalnızca tam kelimeleri arama:
$ grep -w 'patricia' myfile
- Tam 'FOO' deseninin geçişlerini sayma:
$ grep -c FOO myfile
- Yukarıdaki ile aynı ancak büyük/küçük harfi göz ardı etme:
$ grep -c -i FOO myfile
- Bir satırın başındaki '.Pp' deseninin tüm geçişlerini bulma:
$ grep '^\.Pp' myfile
Kesme işaretleri, ifadenin tamamının kullanıcının kabuğu yerine grep tarafından
değerlendirilmesini sağlar. Düzeltme işareti ‘^’ bir satırın başındaki boş diziyi
eşleştirir ve ‘\’ işareti, aksi takdirde herhangi bir karakterle eşleşecek olan ‘.’
karakterini kaçırır.
- Bir dosyada 'foo' veya 'bar' kelimelerini içermeyen tüm satırları bulma:
$ grep -v -e 'foo' -e 'bar' myfile
- Genişletilmiş düzenli ifadeleri kullanarak 19, 20 veya 25'i aramak için
'calendar' dosyasını inceleme:
$ egrep '19|20|25' calendar
- Eşleşen satırları ve 'FIXME' desenini içeren '*.h' dosyalarının adını gösterme.
Aramayı /usr/src/sys/arm dizininden özyinelemeli olarak gerçekleştirme:
$ grep -H -R FIXME --include="*.h" /usr/src/sys/arm/
- Yukarıdaki ile aynı ancak show only the name of the matching file:
$ grep -l -R FIXME --include="*.h" /usr/src/sys/arm/
- 'foo' metnini içeren satırları gösterme. Çıktının eşleşen kısmı renklendirilir ve
eşleşen satırlar için her satırın önüne satır numarası ve dosyadaki ofset eklenir.
$ grep -b --colour -n foo myfile
- Standart girdiden okunan genişletilmiş düzenli ifade desenleriyle eşleşen
satırları gösterme:
$ echo -e 'Free\nBSD\nAll.*reserved' | grep -E -f - myfile
- pciconf(8) komutunun çıktısından belirtilen genişletilmiş düzenli ifadeyle
eşleşen satırları, üç satır öndeki bağlam satırı ve bir satır takip eden bağlam
satırı ile birlikte gösterme:
$ pciconf -lv | grep -B3 -A1 -E 'class.*=.*storage'
- Herhangi bir çıktıyı bastırma ve uygun bir mesaj göstermek için çıkış durumunu
kullanma:
$ grep -q foo myfile && echo File matches
Ayrıca Bakınız
bzip2(1), compress(1), ed(1), ex(1), gzip(1), sed(1), xz(1), zgrep(1), re_format(7)
Standartlar
grep aracı IEEE Std 1003.1-2008 (“POSIX.1”) belirtimiyle uyumludur.
[-AaBbCDdGHhILmopRSUVw] bayrakları bu belirtimin uzantılarıdır ve boş bir desen dosyasıyla kullanıldığında -f bayrağının davranışı tanımsız bırakılmıştır.
Tüm uzun seçenekler, bu aracın GNU sürümleriyle uyumluluk sağlamak amacıyla sunulmuştur.
grep aracının geçmiş sürümleri [-ruy] bayraklarını da destekliyordu. Bu sürüm bu seçenekleri desteklemektedir; ancak kullanımları kesinlikle önerilmez.
Geçmiş
grep komutu ilk olarak Version 6 AT&T UNIX sürümünde ortaya çıkmıştır.
Hatalar
grep aracı Unicode girdiyi normalleştirmez, bu nedenle birleşik karakterler (composed characters) içeren bir desen, ayrıştırılmış (decomposed) girdiyle eşleşmez ve bunun tersi de geçerlidir.
macOS 26.4 November 10, 2021 macOS 26.4