man/text
man · Metin İşleme

$ grep

Bölüm 1 · Metin İşleme

dosya örüntüsü 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, verilen girdi dosyalarında bir veya daha fazla örüntüyle eşleşen satırları seçer. Varsayılan olarak, örüntüdeki düzenli ifade (RE) girdi satırıyla sonundaki yeni satır karakteri olmadan eşleşiyorsa örüntü o satırla eşleşmiş sayılır.

Boş 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 (BRE) için kullanılır. egrep, 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, grep ve egrep araçlarından daha hızlıdır, ancak yalnızca sabit örüntüleri işleyebilir; yani düzenli ifadeleri yorumlamaz. Örüntüler bir veya daha fazla satırdan oluşabilir; bu, ö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) ile 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) ile sıkıştırılmış girdi dosyalarını kabul eder.

Seçenekler

  • -A num, --after-context=num: Her eşleşmeden sonra num satırlık sonraki bağlamı yazdırır. Ayrıca -B ve -C seçeneklerine bakın.
  • -a, --text: Tüm dosyaları ASCII metni olarak ele alır. Normalde dosyalar ikili karakterler içeriyorsa grep yalnızca "Binary file ... matches" yazar; bu seçenek, eşleşen satırların çıktı olarak verilmesini zorlar.
  • -B num, --before-context=num: Her eşleşmeden önce num satırlık önceki bağlamı yazdırır. Ayrıca -A ve -C seçeneklerine bakın.
  • -b, --byte-offset: Eşleşen örüntünün bayt cinsinden ofsetini, ilgili eşleşen satırın önünde gösterir.
  • -C num, --context=num: Her eşleşmeyi çevreleyen num satırlık önceki ve sonraki bağlamı 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ını yazar.
  • --colour=[when], --color=[when]: Eşleşen metni GREP_COLOR ortam değişkeninde saklanan ifadeyle işaretler. when için olası değerler never, always ve auto şeklindedir.
  • -D action, --devices=action: Aygıtlar, FIFO'lar ve soketler için talep edilen eylemi belirtir. Varsayılan eylem read değeridir; bu, aygıtların normal dosyalarmış gibi okunacağı anlamına gelir. skip ayarlanırsa aygıtlar sessizce atlanır.
  • -d action, --directories=action: Dizinler için talep edilen eylemi belirtir. Varsayılan değer read şeklindedir. Diğer olası değerler, dizinleri sessizce yok saymak için skip ve yinelemeli okumak için recurse şeklindedir; recurse, -R ve -r seçenekleriyle aynı etkiye sahiptir.
  • -E, --extended-regexp: Örüntüyü genişletilmiş düzenli ifade olarak yorumlar; yani grep aracını egrep gibi davranmaya zorlar.
  • -e pattern, --regexp=pattern: Aramada kullanılacak örüntüyü belirtir. Bu seçenek, birden fazla örüntü belirtmek için birden fazla -e kullanıldığında veya örüntü tire (-) ile başladığında özellikle yararlıdır.
  • --exclude pattern: Verilen dosya adı kalıbıyla eşleşen dosyaları aramadan hariç tutar. --exclude ve --include kalıpları verilen sırayla işlenir; bir ad birden fazla kalıpla eşleşirse en son eşleşen kural geçerli olur.
  • --exclude-dir pattern: -R belirtilmişse, verilen dosya adı kalıbıyla eşleşen dizinleri aramadan hariç tutar. --exclude-dir ve --include-dir kalıpları verilen sırayla işlenir; bir ad birden fazla kalıpla eşleşirse en son eşleşen kural geçerli olur.
  • -F, --fixed-strings: Örüntüyü sabit dizgiler kümesi olarak yorumlar; yani grep aracını fgrep gibi davranmaya zorlar.
  • -f file, --file=file: file dosyasından yeni satırlarla ayrılmış bir veya daha fazla örüntü okur. Boş örüntü satırları her girdi satırıyla eşleşir; dosya boşsa hiçbir şey eşleşmez.
  • -G, --basic-regexp: Örüntüyü temel düzenli ifade olarak yorumlar; yani grep aracını 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ı hiçbir zaman yazdırmaz.
  • --help: Kısa bir yardım mesajı yazdırır.
  • -I: İkili dosyaları yoksayar. 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şme gerçekleştirir. Varsayılan olarak grep büyük/küçük harfe duyarlıdır.
  • --include pattern: Yalnızca verilen dosya adı kalıbıyla eşleşen dosyaları arar. --include ve --exclude kalıpları verilen sırayla işlenir; bir ad birden fazla kalıpla eşleşirse en son eşleşen kural geçerli olur.
  • --include-dir pattern: -R belirtilmişse, yalnızca verilen dosya adı kalıbıyla eşleşen dizinleri arar. --include-dir ve --exclude-dir kalıpları verilen sırayla işlenir; bir ad birden fazla kalıpla 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ış 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ını yazar. Standart girdi aranırsa ve --label belirtilmemişse (standard input) yazılır.
  • -l, --files-with-matches: Standart çıktıya yalnızca seçilen satırları içeren dosyaların adlarını yazar. grep, her dosyayı yalnızca bir eşleşme bulunana kadar arar.
  • --label: Dosya adının normalde yazdırılacağı yerlerde (standard input) yerine kullanılacak etiketi belirtir. Bu seçenek -H, -L ve -l için geçerlidir.
  • --mmap: Girdiyi okumak için read(2) yerine mmap(2) kullanır. Bazı durumlarda daha iyi performans sağlayabilir, ancak tanımlanmamış davranışlara neden olabilir.
  • -M, --lzma: Metni aramadan önce LZMA ile sıkıştırılmış dosyanın sıkıştırmasını açar.
  • -m num, --max-count=num: num sayıda 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ını ekler. -c, -L, -l veya -q belirtilmişse bu seçenek yoksayılır.
  • --null: Dosya adından sonra bir sıfır baytı yazar.
  • -O: -R belirtilmişse, sembolik bağları 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 moddur; normal çıktıyı bastırır. grep, her dosyayı yalnızca bir eşleşme bulunana kadar arar.
  • -R, -r, --recursive: Listelenen alt dizinleri yinelemeli olarak arar; yani grep aracını rgrep gibi davranmaya zorlar.
  • -S: -R belirtilmişse tüm sembolik bağları takip eder. Varsayılan davranış sembolik bağları takip etmemektir.
  • -s, --no-messages: Sessiz moddur. Mevcut olmayan ve okunamayan dosyalar yoksayılır; hata mesajları bastırılır.
  • -U, --binary: İkili dosyaları arar, ancak bunları yazdırmaya çalışmaz.
  • -u: Bu seçeneğin hiçbir etkisi yoktur; yalnızca GNU grep ile uyumluluk için sunulmuştur.
  • -V, --version: Sürüm bilgisini görüntüler ve çıkış yapar.
  • -v, --invert-match: Belirtilen örüntülerden hiçbirisiyle eşleşmeyen satırları seçer.
  • -w, --word-regexp: İfadeyi kelime olarak arar; sanki [[:<:]] ve [[:>:]] ile çevrelenmiş gibi davranır. -x de belirtilmişse bu seçeneğin etkisi yoktur.
  • -x, --line-regexp: Yalnızca sabit dizginin veya düzenli ifadenin tamamıyla eşleşen girdi satırlarını eşleşen satır olarak kabul eder.
  • -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 yerine sıfır baytı ile sonlandırılan satır dizileri olarak ele alır.
  • -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 aracını zgrep gibi davranmaya zorlar.
  • --binary-files=value: İkili dosyaların aranmasını ve yazdırılmasını denetler.
  • --line-buffered: Çıktıyı satır arabellekli olmaya zorlar. Varsayılan olarak çıktı, standart çıktı terminal olduğunda satır arabellekli; aksi halde blok arabellekli olur.

--binary-files=value için desteklenen değerler:

  • binary: Varsayılan değerdir; ikili dosyaları arar ancak yazdırmaz.
  • without-match: İkili dosyaları aramaz.
  • text: Tüm dosyaları metin olarak ele alır.

Herhangi bir dosya argümanı belirtilmezse standart girdi kullanılır. Dosya adının kabul edildiği her yerde standart girdiden okumak için dosya adı yerine - kullanılabilir; bu hem -f hem de dosya argümanları için geçerlidir.

Ortam

  • GREP_OPTIONS: Argüman listesinin başına yerleştirilecek varsayılan seçenekleri belirtmek için kullanılabilir. GNU grep uygulamasının aksine, ters eğik çizgiyle kaçış desteklenmez.

Çıkış Durumu

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

grep 'patricia' myfile

Yukarıdakinin aynısını yalnızca tam kelimeler için yapmak:

grep -w 'patricia' myfile

Tam olarak FOO örüntüsünün oluşumlarını saymak:

grep -c FOO myfile

Yukarıdakinin aynısını büyük/küçük harf durumunu yoksayarak yapmak:

grep -c -i FOO myfile

Bir satırın başındaki .Pp örüntüsünün tüm oluşumlarını bulmak:

grep '^\.Pp' myfile

Tırnak işaretleri, tüm ifadenin kullanıcının kabuğu yerine grep tarafından değerlendirilmesini sağlar. Düzeltme işareti ^ satırın başındaki boş dizgiyle eşleşir; \ karakteri, aksi halde herhangi bir karakterle eşleşecek olan . karakterinden kaçar.

Bir dosyada foo veya bar kelimelerini içermeyen tüm satırları bulmak:

grep -v -e 'foo' -e 'bar' myfile

Genişletilmiş düzenli ifadelerle calendar dosyasında 19, 20 veya 25 aramak:

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östermek; aramayı /usr/src/sys/arm dizininden başlayarak yinelemeli yapmak:

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

Yukarıdakinin aynısını yalnızca eşleşen dosyanın adını göstererek yapmak:

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

foo metnini içeren satırları göstermek; çıktının eşleşen kısmını renklendirmek ve eşleşen satırlar için her satırın önüne satır numarası ile dosyadaki ofseti eklemek:

grep -b --colour -n foo myfile

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

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

pciconf(8) çı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östermek:

pciconf -lv | grep -B3 -A1 -E 'class.*=.*storage'

Herhangi bir çıktıyı bastırmak ve uygun bir mesaj göstermek için çıkış durumunu kullanmak:

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, IEEE Std 1003.1-2008 ("POSIX.1") belirtimiyle uyumludur.

[-AaBbCDdGHhILmopRSUVw] bayrakları bu belirtime yapılan uzantılardır. Boş bir örüntü dosyasıyla kullanıldığında -f bayrağının davranışı tanımlanmamış bırakılmıştır.

Tüm uzun seçenekler, bu yardımcı aracın GNU sürümleriyle uyumluluk amacıyla sağlanmıştır.

grep aracının geçmiş sürümleri [-ruy] bayraklarını da destekliyordu. Bu uygulama bu seçenekleri destekler; ancak bunların kullanılması kesinlikle önerilmez.

Tarihçe

grep komutu ilk olarak Version 6 AT&T UNIX'te ortaya çıkmıştır.

Hatalar

grep, Unicode girdisini normalleştirmez. Bu nedenle birleşik karakterler içeren bir örüntü ayrıştırılmış girdiyle eşleşmez; bunun tersi de geçerlidir.