Örneklerle Linux/Unix'te Pipe, Grep ve Sort Komutu

⚡ Akıllı Özet

Linux ve Unix'te pipe, grep ve sort komutları metni zincirleme ve filtreleme işlevi görür: pipe bir komutun çıktısını bir sonrakine aktarır, grep kalıpları arar ve sort satırları düzenlerken, filter komutları verileri aralarında dönüştürür.

  • 🔗 Boru: Boru işareti (|) bir komutun çıktısını bir sonraki komutun girdisi olarak iletir.
  • 📄 Çağrı: `cat` komutu `less`, `pg` veya `more` parametrelerine yönlendirildiğinde uzun dosyaları ekran ekran gösterir.
  • 🔍 grep: `grep` komutu, bir dosyada belirli bir dize veya kalıpla eşleşen satırları arar.
  • 🎚️ grep seçenekleri: -v, -c, -n, -i ve -l gibi bayraklar sırasıyla dosyaları ters çevirir, sayar, numaralandırır, büyük/küçük harf duyarlılığını yok sayar ve listeler.
  • 🔤 düzenlemek: Sıralama komutu, dosyadaki satırları sıralar; -r, -n ve -f seçenekleri ise sırasıyla tersine, sayısal ve büyük/küçük harf duyarsız sıralama anlamına gelir.
  • 🧪 Filtreler: Grep, sort, awk, sed ve wc gibi filtreleme komutları, boru hattıyla gelen girdiyi işler ve çıktı üretir.
  • 🤖 Yapay zekâ yardımı: Yapay zekâ asistanları ve GitHub Copilot, pipe, grep ve sort işlem hatlarını oluşturabilir ve açıklayabilir.

Linux ve Unix'te pipe, grep ve sort komutları ve örnekleri

Pipes, grep ve sort, en çok kullanılan araçlar arasındadır. Linux Komut satırı, küçük komutları güçlü bir iş akışına bağlamanıza olanak tanıdığı için tercih edilir. Bu sayfa, her birini örneklerle açıklıyor ve ardından filtrelerin bunları nasıl bir araya getirdiğini gösteriyor.

Linux'ta Pipe nedir?

Linux'ta "pipe" komutu, bir komutun çıktısının bir sonraki komutun girdisi olarak kullanılmasını sağlayan bir komuttur. Kısaca, her işlemin çıktısı, bir boru hattı gibi, doğrudan bir sonrakine girdi olarak beslenir. '|' sembolü bir boruyu ifade eder.

Borular, iki veya daha fazla komutu aynı anda birleştirmenize ve ardışık olarak çalıştırmanıza yardımcı olur. Karmaşık görevleri anında gerçekleştiren güçlü komutlar kullanabilirsiniz.

Bunu bir örnekle anlayalım.

Birden fazla sayfaya yayılan bir dosyayı görüntülemek için 'cat' komutunu kullandığınızda, komut istemi hızla dosyanın son sayfasına atlar ve ortadaki içeriği göremezsiniz.

Bunu önlemek için, 'cat' komutunun çıktısını 'less' komutuna yönlendirebilirsiniz; bu komut size her seferinde yalnızca bir kaydırma uzunluğu kadar içerik gösterir.

cat filename | less

Bir görsel bunu daha net açıklayacaktır. Aşağıdaki diyagram, bir borunun bir komutun çıktısını bir sonrakine nasıl aktardığını göstermektedir.

Linux'ta bir komutun çıktısını bir sonraki komutun girdisi olarak ileten bir boru hattının diyagramı.

'pg' ve 'daha fazla' komutları

'Less' yerine 'pg' veya 'more' komutunu da kullanabilirsiniz:

cat Filename | pg

or

cat Filename | more

Ardından dosyayı sindirilebilir parçalar halinde görüntüleyebilir ve Enter tuşuna basarak aşağı doğru kaydırabilirsiniz. Aşağıdaki ekran görüntüsü, "more" komutuyla sayfalandırılmış bir dosyayı göstermektedir.

`cat` komutu, uzun bir dosyayı ekran ekran ilerletmek için `more` komutuna yönlendirildi.

'Grep' komutu

Örneğin, bir metin dosyasında posta kodu gibi belirli bir bilgiyi aramak istediğinizi varsayalım.

İçeriği kendiniz de manuel olarak inceleyebilirsiniz. tracBilgiyi kullanın. Daha iyi bir seçenek ise şunu kullanmaktır: grep Bu komut, belgeyi istenen bilgiler için tarar ve sonucu istediğiniz formatta sunar.

Sözdizimi:

grep search_string

Şimdi bunu uygulamada görelim. Aşağıdaki ekran görüntüsü aramanın sonucunu göstermektedir.

Örnek dosyada "Apple" ve "Eat" kelimelerini arayan grep komutu.

Burada, grep komutu 'sample' dosyasında 'Apple' ve 'Eat' kelimelerini aradı. Bu komutla aşağıdaki seçenekler kullanılabilir.

Opsiyon İşlev
-v Aranan dizeyle eşleşmeyen tüm satırları gösterir
-c Yalnızca eşleşen satırların sayısını görüntüler
-n Eşleşen satırı ve numarasını gösterir
-i Hem büyük hem de küçük harfleri eşleştirir.
-l Dize içeren dosyanın yalnızca adını gösterir

Yukarıda kullanılan aynı dosya üzerinde '-i' seçeneğini deneyelim. Aşağıdaki ekran görüntüsü, büyük/küçük harf duyarlılığı olmayan sonucu göstermektedir.

grep -i komutu, büyük/küçük harf duyarlılığı olmaksızın "a" harfini arar.

'-i' seçeneği kullanılarak, grep tüm satırlardan 'a' dizesini (büyük/küçük harf duyarlılığı olmaksızın) filtreledi.

'Sırala' komutu

Bu komut, bir dosyanın içeriğini alfabetik olarak sıralamaya yardımcı olur.

Bu komutun sözdizimi şöyledir:

sort Filename

Aşağıda cat komutuyla gösterilen bir dosyanın içeriğini inceleyin.

`cat` komutu, `abc` dosyasının sıralanmamış içeriğini gösteriyor.

Sıralama komutunu çalıştırmak, bu satırları aşağıda gösterildiği gibi alfabetik sıraya göre düzenler.

`sort` komutu, `abc` dosyasının içeriğini alfabetik sıraya göre düzenler.

Bu komutun uzantıları da mevcuttur ve bunlar aşağıda listelenmiştir.

Opsiyon İşlev
-r Reversesıralama
-n Sayısal olarak sıralar
-f Büyük/küçük harf duyarlılığı olmayan sıralama

Aşağıdaki örnek 'abc' dosyasındaki içeriklerin ters sıralamasını göstermektedir.

`sort -r` komutu, `abc` dosyasının içeriğini ters yönde sıralar.

Filtre Nedir?

Linux'ta awk, grep, sed, spell ve wc gibi birçok filtre komutu bulunur. Filtre, bir komuttan girdi alır, bazı işlemler yapar ve çıktı verir.

İki komutu ardışık olarak çalıştırdığınızda, ilk komutun 'filtrelenmiş' çıktısı bir sonrakine verilir. Aşağıdaki diyagram, bir filtrenin ardışık işlem hattına nasıl uyduğunu göstermektedir.

Linux filtreleme işleminin şematik gösterimi: Girişi boru hattı yoluyla alır, işler ve çıktı üretir.

Bunu bir örnek yardımıyla anlayalım. Aşağıda kediyle gösterilen 'sample' adlı bir dosyamız var.

`cat` komutu, filtrelemeden önce örnek dosyanın içeriğini görüntüler.

Yalnızca 'a' karakterini içermeyen satırları vurgulamak istiyoruz, ancak sonuç ters sırada olmalı. Bunun için aşağıdaki sözdizimi kullanılabilir:

cat sample | grep -v a | sort -r

Aşağıdaki ekran görüntüsünde gösterilen sonuca bakalım.

`cat` komutu `grep -v` ve `sort -r` komutlarından geçirildikten sonra, `a` harfi içermeyen ters sıralı satırlar üretildi.

SSS

Boru işareti (|) bir komutun çıktısını doğrudan başka bir komuta göndererek onları birbirine bağlar. Yönlendirme (> ve <) ise bir komutu bir dosyaya bağlayarak çıktıyı bir dosyaya yazar veya girdiyi bir dosyadan okur. Boru işaretleri komutları birbirine bağlar; yönlendirme ise komutları ve dosyaları birbirine bağlar.

grep, Global Regular Expression Print'in kısaltmasıdır. Bir dosyayı veya girdiyi satır satır tarar ve verdiğiniz kalıpla eşleşen her satırı yazdırır. Adı, aynı aramayı gerçekleştiren eski ed editör komutu g/re/p'den gelir.

`sort` komutunun, satırları tek adımda sıralayıp yinelenenleri kaldıran bir `-u` seçeneği vardır: `sort -u file`. Ayrıca, `uniq` yalnızca zaten bitişik olan yinelenenleri kaldırdığı için, `sort` komutunu `sort file | uniq` şeklinde de kullanabilirsiniz.

İşlem hattını yönlendirme ile sonlandırın: `cat sample | grep -va | sort -r > result.txt` komutu nihai çıktıyı bir dosyaya yazar. Çıktıyı ekranda görmek ve aynı anda kaydetmek için, bunun yerine `tee` komutuna yönlendirin.

`grep` komutu, dosyalarda belirli bir metin kalıbına uyan satırları arar. `find` komutu ise dosyaları ve dizinleri ad, boyut, tür veya tarihe göre bulur. Kısacası, `grep` dosya içeriklerine bakarken, `find` dizin ağacındaki dosyaları arar.

`tee` komutu, bir borudan veri okur ve verileri hem ekrana hem de bir veya daha fazla dosyaya aynı anda yazar; örneğin `grep error log | tee errors.txt`. Bu komut, işlem hattını bozmadan ara çıktıları kaydetmenizi sağlar.

Yapay zekâ asistanları, basit bir İngilizce isteğinden doğru komut dizisini önerebilir, alışılmadık grep veya sıralama bayraklarını açıklayabilir ve bir işlem hattındaki hataları tespit edebilir. Makine öğrenimi araçları ayrıca, manuel filtrelemenin gözden kaçıracağı anormallikleri işaretlemek için işlem hattı günlük çıktısını da tarar.

Evet. GitHub Yardımcı Pilotu İhtiyaçlarınızı açıklayan kısa bir yorumdan yola çıkarak `cat`, `grep` ve `sort` komutlarını birleştiren işlem hatları oluşturabilir ve siz yazarken komutları tamamlayabilir. RevÖnerilen tüm işlem hatlarını örnek verilerle karşılaştırın, özellikle satırları yeniden sıralayan veya silen seçenekleri inceleyin.

Bu yazıyı şu şekilde özetleyin: