Normal İfadeler Kullanarak Düz Metin Verilerini Aramak için En İyi 6 CLI Aracı


Bu kılavuz, metin dosyalarındaki eşleşen dizeleri veya kalıpları aramak için kullanılan en iyi komut satırı araçlarından bazılarına genel bir bakış sunar. Bu araçlar genellikle, bir arama modelini tanımlayan benzersiz dizeler olan REGEX olarak kısaltılmış normal ifadelerle birlikte kullanılır.

Lafı fazla uzatmadan konuya girelim.

1. Grep Komutu

İlk etapta grep yardımcı aracı geliyor; Global Regular Expression Print'in kısaltmasıdır ve bir dosyada belirli bir dize veya desen ararken kullanışlı olan güçlü bir komut satırı aracıdır. .

Grep varsayılan olarak modern Linux dağıtımlarıyla birlikte gelir ve size çeşitli arama sonuçlarını döndürme esnekliği sağlar. Grep ile aşağıdakiler gibi çok çeşitli işlevleri gerçekleştirebilirsiniz:

  • Bir dosyada dizeleri veya eşleşen kalıpları arayın.
  • Gzip'lenmiş dosyalardaki dizeleri veya eşleşen kalıpları arayın.
  • Dize eşleşmelerinin sayısını sayın.
  • Dizeyi veya deseni içeren satır numaralarını yazdırın.
  • Dizinlerde dizeyi yinelemeli olarak arayın.
  • Geriye doğru arama yapın (yani, arama kriterleriyle eşleşmeyen dizelerin sonuçlarını görüntüleyin).
  • Dizeleri ararken büyük/küçük harf duyarlılığını göz ardı edin.

grep komutunu kullanmanın sözdizimi oldukça basittir:

grep pattern FILE

Örneğin, bir dosyada 'Linux' dizesini aramak için (örneğin, hello.txt) büyük/küçük harf duyarlılığını göz ardı ederek şu komutu çalıştırın:

grep -i Linux hello.txt

grep ile kullanabileceğiniz daha fazla seçeneğe ulaşmak için, daha gelişmiş grep komut örneklerinin yer aldığı makalemizi okumanız yeterlidir.

2.sed Komutu

Akış Düzenleyici'nin kısaltması olan Sed, bir metin dosyasındaki metni değiştirmek için kullanılan başka bir kullanışlı komut satırı aracıdır. Sed, belirli bir dosyadaki dizeleri etkileşimli olmayan bir şekilde arar, filtreler ve değiştirir.

Varsayılan olarak, sed komutu çıktıyı STDOUT'a (Standart Çıkış) yazdırır; bu, yürütme sonucunun yerine terminalde yazdırıldığını ima eder. bir dosyaya kaydediliyor.

Sed komutu şu şekilde çağrılır:

sed -OPTIONS command [ file to be edited ]

Örneğin, 'Unix'in tüm örneklerini 'Linux' ile değiştirmek için şu komutu çağırın:

sed 's/Unix/Linux' hello.txt

Çıktıyı terminalde yazdırmak yerine yeniden yönlendirmek istiyorsanız gösterildiği gibi ( > ) yönlendirme işaretini kullanın.

sed 's/Unix/Linux' hello.txt > output.txt

Komutun çıktısı ekrana yazdırılmak yerine output.txt dosyasına kaydedilir.

Kullanılabilecek daha fazla seçeneğe göz atmak için kılavuz sayfalarına bir kez daha göz atın.

man sed

3. Onaylama Komutu

Ack Perl'de yazılmış hızlı ve taşınabilir bir komut satırı aracıdır. Ack, grep yardımcı programının yerine kolay bir alternatif olarak kabul edilir ve sonuçları görsel olarak çekici bir şekilde üretir.

Ack komutu, dosya veya dizinde, arama kriterlerine uygun eşleşmeyi içeren satırları arar. Daha sonra satırlardaki eşleşen dizeyi vurgular.
Ack, dosyaları dosya uzantılarına ve bir dereceye kadar da dosyalardaki içeriğe göre ayırt etme kapasitesine sahiptir.

Ack komutunun sözdizimi:

ack [options] PATTERN [FILE...]
ack -f [options] [DIRECTORY...]

Örneğin, Linux arama terimini kontrol etmek için şunu çalıştırın:

ack Linux hello.txt

Arama aracı oldukça akıllıdır ve kullanıcı tarafından herhangi bir dosya veya dizin sağlanmadıysa, arama modeli için geçerli dizini ve alt dizinleri arar.

Aşağıdaki örnekte herhangi bir dosya veya dizin sağlanmamıştır ancak ack otomatik olarak mevcut dosyayı algılamış ve sağlanan eşleşen modeli aramıştır.

ack Linux

Sisteminize ack'i yüklemek için şu komutu çalıştırın:

sudo apt install ack-grep    [On Debian/Ubuntu]
sudo dnf install ack-grep    [On CentOS/RHEL]

4. Garip Komut

Awk tam teşekküllü bir kodlama dilidir ve aynı zamanda bir metin işleme ve veri işleme aracıdır. Arama modelini içeren dosyaları veya programları arar. Dize veya kalıp bulunduğunda awk, eşleşme veya çizgi üzerinde işlem yapar ve sonuçları STDOUT'a yazdırır.

AWK modeli küme parantezleri arasına alınırken programın tamamı tek tırnak içine alınır.

En basit örneği ele alalım. Sisteminizin tarihini gösterildiği gibi yazdırdığınızı varsayalım:

date

Yalnızca haftanın günü olan ilk değeri yazdırmak istediğinizi varsayalım. Bu durumda çıktıyı gösterildiği gibi awk'ye yönlendirin:

date | awk '{print $1}'

Sonraki değerleri görüntülemek için gösterildiği gibi virgül kullanarak ayırın:

date | awk '{print $1,$2}'

Yukarıdaki komut haftanın gününü ve ayın tarihini gösterecektir.

awk ile kullanabileceğiniz daha fazla seçeneğe ulaşmak için awk komut serimizi okumanız yeterlidir.

5. Gümüş Arayıcı

Silver Searcher, ack'e benzer ancak hıza önem veren, platformlar arası ve açık kaynak kodlu bir arama aracıdır. Dosyalar içinde belirli bir dizeyi mümkün olan en kısa sürede aramanızı kolaylaştırır:

Sözdizimi:

ag OPTIONS search_pattern /path/to/file

Örneğin, bir hello.txt dosyasında 'Linux' dizesini aramak için şu komutu çağırın:

ag Linux hello.txt

Ek seçenekler için man sayfalarını ziyaret edin:

man ag

6. Ripgrep

Son olarak ripgrep komut satırı aracımız var. Ripgrep normal ifade kalıplarını aramaya yönelik platformlar arası bir yardımcı programdır. Daha önce bahsedilen tüm arama araçlarından çok daha hızlıdır ve eşleşen kalıpları yinelemeli olarak dizinlerde arar. Hız ve performans açısından Ripgrep kadar öne çıkan başka bir araç yok.

Varsayılan olarak, ripgrep ikili dosyaları/gizli dosya ve dizinleri atlayacaktır. Ayrıca, varsayılan olarak .gitignore/.ignore/.rgignore dosyaları tarafından yok sayılan dosyaları aramayacağını unutmayın.

Ripgrep ayrıca belirli dosya türlerini aramanıza da olanak tanır. Örneğin, aramanızı Javascript dosyalarıyla sınırlamak için şunu çalıştırın:

rg -Tsj

ripgrep'i kullanmanın sözdizimi oldukça kolaydır:

rg [OPTIONS] PATTERN [PATH...]

Örneğin. Geçerli dizinde bulunan dosyalarda 'Linux' dizisinin örneklerini aramak için şu komutu çalıştırın:

rg Linux

Sisteminize ripgrep'i yüklemek için aşağıdaki komutları çalıştırın:

sudo apt install ripgrep      [On Debian/Ubuntu]
sudo pacman -S ripgrep        [On Arch Linux]
sudo zypper install ripgrep   [On OpenSuse]
sudo dnf install ripgrep      [On CentOS/RHEL/Fedora]

Ek seçenekler için man sayfalarını ziyaret edin:

man rg

Bunlar Linux'ta metin aramak, filtrelemek ve değiştirmek için en yaygın kullanılan komut satırı araçlarından bazılarıdır. Dışarıda bıraktığımızı düşündüğünüz başka araçlarınız varsa, yorum bölümünde bize bildirin.