← man/text
grep — man grep — 80×24
ugur@toprak:~/man/text$man grep
Bölüm 1 Metin İşleme

grep

dosya örüntüsü arayıcı

Özet

     grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A sayi] [-B sayi] [-C sayi] [-e oruntu] [-f dosya]
	  [--binary-files=deger] [--color[=ne_zaman]] [--colour[=ne_zaman]] [--context=sayi] [--label]
	  [--line-buffered] [--null] [oruntu] [dosya ...]

Açıklama

grep yardımcı programı, verilen girdi dosyalarında arama yaparak bir veya daha fazla örüntüyle (pattern) eşleşen satırları seçer. Varsayılan olarak, örüntüdeki düzenli ifade (regular expression - RE), girdi satırındaki sondaki satır sonu karakteri (newline) hariç tutulduğunda satırla eşleşiyorsa bir girdi satırı eşleşmiş kabul edilir. Boş bir ifade her satırla eşleşir. Örüntülerden en az biriyle eşleşen her girdi satırı standart çıktıya yazılır.

grep basit örüntüler ve temel düzenli ifadeler (basic regular expressions - BREs) için kullanılır; egrep ise genişletilmiş düzenli ifadeleri (extended regular expressions - EREs) işleyebilir. Düzenli ifadeler hakkında daha fazla bilgi için re_format(7) kılavuzuna bakın. fgrep, hem grep hem de egrep'ten daha hızlıdır ancak yalnızca sabit örüntüleri (fixed patterns) işleyebilir (yani, düzenli ifadeleri yorumlamaz). Örüntüler bir veya daha fazla satırdan oluşabilir, bu da örüntü 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 yardımcı programları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 yardımcı programıyla sıkıştırılmış girdi dosyalarını kabul eder.

Aşağıdaki seçenekler mevcuttur:

-A sayi, --after-context=sayi Her eşleşmeden sonraki sayi satırlık bağlamı (context) yazdırır. Ayrıca -B ve -C seçeneklerine bakın.

-a, --text Tüm dosyaları ASCII metin dosyası gibi işler. Normalde 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 örüntüyle eşleşen satırları çıktılamaya zorlar.

-B sayi, --before-context=sayi Her eşleşmeden önceki sayi satırlık bağlamı yazdırır. Ayrıca -A ve -C seçeneklerine bakın.

-b, --byte-offset Eşleşen bir örüntünün bayt cinsinden konumu (offset), ilgili eşleşen satırın önünde görüntülenir.

-C sayi, --context=sayi Her eşleşmenin öncesindeki ve sonrasındaki sayi satırlık bağlamı yazdırır. Ayrıca -A and -B seçeneklerine bakın.

-c, --count Standart çıktıya yalnızca seçilen satırların sayısı yazılır.

--colour=[ne_zaman], --color=[ne_zaman] Eşleşen metni GREP_COLOR ortam değişkeninde saklanan ifadeyle renklendirir. ne_zaman için olası değerler “never” (asla), “always” (her zaman) ve “auto” (otomatik) şeklindedir.

-D eylem, --devices=eylem Aygıtlar, FIFO'lar ve soketler için talep edilen eylemi belirtir. Varsayılan eylem “read” (oku) şeklindedir, yani normal dosyalarmış gibi okunurlar. Eylem “skip” (atla) olarak ayarlanırsa aygıtlar sessizce atlanır.

-d eylem, --directories=eylem Dizinler için talep edilen eylemi belirtir. Varsayılan olarak “read” (oku) şeklindedir, bu da dizinlerin normal dosyalarla aynı şekilde okunacağı anlamına gelir. Diğer olası değerler, dizinleri sessizce yok saymak için “skip” (atla) ve bunları yinelemeli (recursive) olarak okumak için “recurse” (yinele) şeklindedir; ikincisi -R ve -r seçenekleriyle aynı etkiye sahiptir.

-E, --extended-regexp Örüntüyü genişletilmiş bir düzenli ifade (extended regular expression) olarak yorumlar (yani grep'i egrep gibi davranmaya zorlar).

-e oruntu, --regexp=oruntu Girdi araması sırasında kullanılacak örüntüyü belirtir: belirtilen örüntülerden herhangi biriyle eşleşen bir girdi satırı seçilir. Bu seçenek, birden fazla örüntü belirtmek için birden fazla -e seçeneği kullanıldığında veya bir örüntü tire işareti (‘-’) ile başladığında çok kullanışlıdır.

--exclude oruntu Belirtilirse, verilen dosya adı örüntüsüyle eşleşen dosyaları aramadan hariç tutar. --exclude ve --include örüntülerinin verilen sırayla işlendiğini unutmayın. Bir ad birden fazla örüntüyle eşleşiyorsa, en son eşleşen kural kazanır. Herhangi bir --include örüntüsü belirtilmemişse, hariç tutulmayan tüm dosyalar aranır. Örüntüler yalnızca dosya adı bileşeniyle değil, belirtilen tam yolla eşleştirilir.

--exclude-dir oruntu -R belirtilmişse, verilen dosya adı örüntüsüyle eşleşen dizinleri aramadan hariç tutar. --exclude-dir ve --include-dir örüntülerinin verilen sırayla işlendiğini unutmayın. Bir ad birden fazla örüntüyle eşleşiyorsa, en son eşleşen kural kazanır. Herhangi bir --include-dir örüntüsü belirtilmemişse, hariç tutulmayan tüm dizinler aranır.

-F, --fixed-strings Örüntüyü sabit dizeler (fixed strings) kümesi olarak yorumlar (yani grep'i fgrep gibi davranmaya zorlar).

-f dosya, --file=dosya Dosyadan yeni satırla (newline) ayrılmış bir veya daha fazla örüntü okur. Boş örüntü satırları her girdi satırıyla eşleşir. Yeni satırlar bir örüntünün parçası olarak kabul edilmez. dosya boşsa hiçbir şey eşleşmez.

-G, --basic-regexp Örüntüyü temel bir düzenli ifade (basic regular expression) 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 dosya adı başlıklarını (yani dosya adlarını) asla yazdırmaz.

  • --help: Kısa bir yardım mesajı yazdırır.

  • -I: İkili (binary) dosyaları yok sayar. Bu seçenek “--binary-files=without-match” seçeneğine eşdeğerdir.

-i, --ignore-case Büyük/küçük harf duyarsız eşleştirme gerçekleştirir. Varsayılan olarak grep büyük/küçük harfe duyarlıdır.

--include oruntu Belirtilirse, yalnızca verilen dosya adı örüntüsüyle eşleşen dosyalar aranır. --include ve --exclude örüntülerinin verilen sırayla işlendiğini unutmayın. Bir ad birden fazla örüntüyle eşleşiyorsa, en son eşleşen kural kazanır. Örüntüler yalnızca dosya adı bileşeniyle değil, belirtilen tam yolla eşleştirilir.

--include-dir oruntu -R belirtilmişse, yalnızca verilen dosya adı örüntüsüyle eşleşen dizinler aranır. --include-dir ve --exclude-dir örüntülerinin verilen sırayla işlendiğini unutmayın. Bir ad birden fazla örüntüyle eşleşiyorsa, en son eşleşen kural kazanır.

-J, --bz2decompress Metni aramadan önce bzip2(1) ile sıkıştırılmış dosyanın sıkıştırmasını açar.

-L, --files-without-match Standart çıktıya yalnızca seçilen satırları içermeyen dosyaların adları 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) dizesi yazılır.

-l, --files-with-matches Standart çıktıya yalnızca seçilen satırları içeren dosyaların adları yazılır. grep bir dosyada yalnızca bir eşleşme bulunana kadar arama yapar, bu da aramaları potansiyel olarak daha az maliyetli hale getirir. Yol adları, aranan dosya başına bir kez listelenir. Standart girdi aranıyorsa, bir --label belirtilmediği sürece “(standard input)” dizesi yazılır.

--label Normalde bir dosya adının yazdırılacağı yerlerde “(standard input)” yerine kullanılacak etiket. Bu seçenek -H, -L ve -l seçenekleri için geçerlidir.

  • --mmap: Bazı durumlarda daha iyi performans sağlayabilen ancak tanımlanmamış davranışlara yol açabilen, girdiyi okumak için read(2) yerine mmap(2) kullanır.

-M, --lzma Metni aramadan önce LZMA ile sıkıştırılmış dosyanın sıkıştırmasını açar.

-m sayi, --max-count=sayi sayi 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 oranı getirilir. İşlenen her dosya için satır numarası sayacı sıfırlanır. -c, -L, -l veya -q seçeneklerinden biri belirtilmişse bu seçenek yoksayılır.

  • --null: Dosya adından sonra sıfır baytlık (zero-byte) bir karakter yazdırır.

  • -O: -R belirtilmişse, sembolik bağları (symbolic links) yalnızca komut satırında açıkça listelenmişlerse takip eder. Varsayılan davranış sembolik bağları takip etmemektir.

-o, --only-matching Satırların yalnızca eşleşen kısmını yazdırır.

  • -p: -R belirtilmişse, hiçbir sembolik bağ takip edilmez. Varsayılan davranış budur.

-q, --quiet, --silent Sessiz mod: normal çıktıyı bastırır. grep bir dosyada yalnızca bir eşleşme bulunana kadar arama yapar, bu da aramaları potansiyel olarak daha az maliyetli hale getirir.

-R, -r, --recursive Listelenen alt dizinleri yinelemeli (recursive) olarak arar. (yani grep'i rgrep gibi davranmaya zorlar).

  • -S: -R belirtilmişse, tüm sembolik bağlar takip edilir. Varsayılan davranış sembolik bağları takip etmemektir.

-s, --no-messages Sessiz mod. Mevcut olmayan ve okunamayan dosyalar yok sayılır (yani hata mesajları bastırılır).

-U, --binary İkili (binary) dosyaları arar, ancak bunları yazdırmaya çalışmaz.

  • -u: Bu seçeneğin hiçbir etkisi yoktur ve yalnızca GNU grep ile uyumluluk için sağlanmıştır.

-V, --version Sürüm bilgisini görüntüler ve çıkar.

-v, --invert-match Seçilen satırlar, belirtilen örüntülerden hiçbiriyle eşleşmeyen satırlardır.

-w, --word-regexp İfade bir sözcük olarak aranır (sanki ‘[[:<:]]’ ve ‘[[:>:]]’ ile çevrelenmiş gibi; bkz. re_format(7)). -x seçeneği de belirtilmişse bu seçeneğin hiçbir etkisi yoktur.

-x, --line-regexp Yalnızca sabit bir dizenin 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, yeni satır (newline) yerine sıfır baytlık bir karakterle sonlandırılan satır dizileri olarak işler.

-X, --xz Metni aramadan önce xz(1) ile sıkıştırılmış dosyanın sıkıştırmasını açar.

-Z, --decompress grep'i zgrep gibi davranmaya zorlar.

--binary-files=deger İ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 dosyası gibi işler.

--line-buffered Çıktıyı satır arabelleğine (line buffered) almaya zorlar. Varsayılan olarak standart çıktı bir terminal olduğunda çıktı satır arabelleğine alınır, aksi takdirde blok arabelleğine (block buffered) alınır.

Hiçbir dosya bağımsız değişkeni belirtilmemişse standart girdi kullanılır. Ayrıca, standart girdiden okumak için dosya adı kabul edildiği her yerde dosya adı yerine “-” kullanılabilir. Buna hem -f hem de dosya bağımsız değişkenleri dahildir.

Ortam

GREP_OPTIONS Bağımsız değişken listesinin başına yerleştirilecek varsayılan seçenekleri belirtmek için kullanılabilir. GNU grep davranışından farklı olarak ters eğik çizgi ile kaçış (backslash-escaping) desteklenmez.

Çıkış Durumu

grep yardımcı programı aşağıdaki değerlerden biriyle çıkış yapar:

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’ örüntüsünün tüm oluşumlarını bulma:

	       $ grep 'patricia' dosyam

     -	 Yukarıdakiyle aynı ancak yalnızca tam kelimeleri arama:

	       $ grep -w 'patricia' dosyam

     -	 Tam olarak ‘FOO’ örüntüsünün oluşumlarını sayma:

	       $ grep -c FOO dosyam

     -	 Yukarıdakiyle aynı ancak büyük/küçük harfi yok sayma:

	       $ grep -c -i FOO dosyam

     -	 Bir satırın başındaki ‘.Pp’ örüntüsünün tüm oluşumlarını bulma:

	       $ grep '^\.Pp' dosyam

	 Kesme işaretleri, tüm ifadenin kullanıcının kabuğu yerine grep tarafından değerlendirilmesini sağlar. Şapka işareti ‘^’, bir satırın başındaki boş dizeyle eşleşir ve ‘\’, aksi takdirde herhangi bir karakterle eşleşecek olan ‘.’ karakterini kaçırır.

     -	 Bir dosyadaki ‘foo’ veya ‘bar’ kelimelerini içermeyen tüm satırları bulma:

	       $ grep -v -e 'foo' -e 'bar' dosyam

     -	 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’ örüntüsünü içeren ‘*.h’ dosyalarının adını gösterme. Aramayı /usr/src/sys/arm dizininden başlayarak yinelemeli olarak yapma:

	       $ grep -H -R FIXME --include="*.h" /usr/src/sys/arm/

     -	 Yukarıdakiyle aynı ancak yalnızca eşleşen dosyanın adını gösterme:

	       $ 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 konumu (offset) eklenir:

	       $ grep -b --colour -n foo dosyam

     -	 Standart girdiden okunan genişletilmiş düzenli ifade örüntüleriyle eşleşen satırları gösterme:

	       $ echo -e 'Free\nBSD\nAll.*reserved' | grep -E -f - dosyam

     -	 pciconf(8) komutunun çıktısından belirtilen genişletilmiş düzenli ifadeyle eşleşen satırları, üç satırlık önceki bağlam ve bir satırlık sonraki bağlamla 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 dosyam && echo Dosya eslesiyor

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 yardımcı programı IEEE Std 1003.1-2008 (“POSIX.1”) spesifikasyonu ile uyumludur.

[-AaBbCDdGHhILmopRSUVw] bayrakları bu spesifikasyona yapılan eklemelerdir ve boş bir örüntü dosyasıyla kullanıldığında -f bayrağının davranışı tanımlanmamış olarak bırakılmıştır.

Tüm uzun seçenekler bu yardımcı programın GNU sürümleriyle uyumluluk sağlamak amacıyla sunulmuştur.

grep yardımcı programının geçmiş sürümleri [-ruy] bayraklarını da destekliyordu. Bu uygulama bu seçenekleri desteklemektedir; ancak their kullanımı kesinlikle önerilmez.

Tarihçe

grep komutu ilk olarak Version 6 AT&T UNIX sürümünde ortaya çıkmıştır.

Hatalar

grep yardımcı programı Unicode girdisini normalize etmez, bu nedenle birleşik karakterler (composed characters) içeren bir örüntü, ayrıştırılmış (decomposed) girdiyle eşleşmeyecektir ve bunun tersi de geçerlidir.

macOS 26.4 Kasım 10, 2021 macOS 26.4