Linux'ta Grep Komutu Nasıl Kullanılır [12 Faydalı Örnek]


Hiç bir dosyada belirli bir dize veya desen arama göreviyle karşı karşıya kaldınız mı, ancak aramaya nereden başlayacağınız konusunda hiçbir fikriniz yok mu? O halde işte grep kurtarma komutu!

grep, her Linux dağıtımıyla donatılmış olarak gelen güçlü bir dosya modeli arama aracıdır. Herhangi bir sebepten dolayı sisteminizde kurulu değilse paket yöneticiniz üzerinden resimdeki gibi kolaylıkla kurulum yapabilirsiniz.

sudo apt install grep         [On Debian, Ubuntu and Mint]
sudo yum install grep         [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
sudo emerge -a sys-apps/grep  [On Gentoo Linux]
sudo apk add grep             [On Alpine Linux]
sudo pacman -S grep           [On Arch Linux]
sudo zypper install grep      [On OpenSUSE]    

grep komutu ile ayaklarınızı ıslatmanın en kolay yolunun, hemen konuya dalmak ve gerçek dünyadan bazı örnekleri kullanmak olduğunu keşfettim.

1. Linux'ta Dosyaları Arayın ve Bulun

Diyelim ki makinenize yeni Ubuntu'nun yeni bir kopyasını yüklediniz ve Python komut dosyası yazmaya bir şans vereceksiniz.

Öğretici bulmak için internette geziniyorsunuz, ancak Python'un iki farklı sürümünün kullanımda olduğunu görüyorsunuz ve yükleyici tarafından Ubuntu'ya hangi Python sürümünün yüklendiğini bilmiyorsunuz veya herhangi bir modül yüklediyse.

Aşağıdaki dpkg komutunu gösterildiği gibi grep ile çalıştırmanız yeterlidir:

dpkg -l | grep -i python

Öncelikle sisteminizde kurulu *.deb paketlerini listeleyen dpkg –l komutunu çalıştırdık. İkinci olarak, bu çıktıyı grep -i python'a aktardık; bu basitçe "grep'e gidin ve filtreleyin ve içinde 'python' bulunan her şeyi döndürün. ”

grep büyük/küçük harfe duyarlı olduğundan, -i seçeneği büyük-küçük harf dikkate alınmaz. -i seçeneğini kullanmak, daha spesifik bir arama yapmaya çalışmadığınız sürece, iyi bir alışkanlıktır.

2. Linux'ta Dosyaları Arayın ve Filtreleyin

grep ayrıca tek tek dosyalar veya birden çok dosya içinde arama yapmak ve filtrelemek için de kullanılabilir. Bu senaryoyu ele alalım:

Apache Web Sunucunuz ile ilgili bir sorun yaşıyorsunuz ve internetteki pek çok harika forumdan birine başvurarak yardım istediniz.

Size yanıt veren nazik ruh, /etc/apache2/apache2.conf dosyanızın içeriğini göndermenizi istedi. Yorum yapılan tüm satırları kaldırabilseydiniz, sizin için, size yardım eden adam ve bunu okuyan herkes için daha kolay olmaz mıydı? Peki, yapabilirsin! Sadece şunu çalıştırın:

grep -v ^\# /etc/apache2/apache2.conf | grep .

-v seçeneği grep'e çıktısını ters çevirmesini söyler; bu, eşleşen satırları yazdırmak yerine tam tersini yapıp ifadeyle eşleşmeyen tüm satırları yazdıracağı anlamına gelir. bu durumda # yorumlu satırlardır.

Tüm boş satırların çıktısını gizlemek için sonda grep . kullandığımızı da unutmayın. Bu şekilde sadece terminalimizde konfigürasyon ayarlarını görüyoruz.

3. Linux'taki tüm .mp3 Dosyalarını bulun

grep, stdout'tan filtrelemek için çok yararlı olabilir. Örneğin, bir sürü farklı formattaki müzik dosyalarıyla dolu bir klasörünüzün olduğunu varsayalım.

JayZ sanatçısına ait tüm *.mp3 dosyalarını bulmak istiyorsunuz ancak remikslenmiş parçalardan hiçbirini istemiyorsunuz. Birkaç grep kanalıyla find komutunu kullanmak işe yarayacaktır:

find . -name “*.mp3” | grep –i JayZ | grep –vi “remix”

Bu örnekte, *.mp3 uzantılı tüm dosyaları yazdırmak için find'i kullanıyoruz ve bunu filtrelemek için grep –i'ye aktarıyoruz "JayZ " adındaki tüm dosyaları çıkartın ve yazdırın ve ardından grep –vi'ye başka bir kanal yazdırın; bu, filtreleyen ve dizeyle birlikte tüm dosya adlarını yazdırmayan (her durumda) "remiks".

4. Arama Dizisinden Önceki veya Sonraki Satır Sayısını Görüntüleyin

Diğer birkaç seçenek de eşleşen satırı ve arama dizesinden önce veya sonra gelen birkaç satırı görüntüleyen -A ve -B anahtarlarıdır.

Kılavuz sayfası daha ayrıntılı bir açıklama verirken, seçenekleri hatırlamanın en kolay yolu şu şekilde olduğunu düşünüyorum: -A=after ve -B=< Strong>önce:

ifconfig | grep -A 4 inet
ifconfig | grep -B 2 UP

5. Maçın Çevresindeki Satır Sayısını Yazdırır

Grep'in -C seçeneği de benzerdir ancak dizeden önce veya sonra gelen satırları yazdırmak yerine satırları her iki yönde de yazdırır:

ifconfig | grep -C 2 lo

 TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 15314  bytes 1593769 (1.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0

6. Eşleşme Sayısını Sayın

Bir grep dizesini kelime sayısına (wc komutu) yönlendirmeye benzer şekilde, grep'in yerleşik seçeneği de sizin için aynı işlemi gerçekleştirebilir:

ifconfig | grep -c inet6

7. Linux'ta Dosyaları Verilen Dizeye Göre Arayın

grep için –n seçeneği, derleme hataları sırasında dosyalardaki hataları ayıklarken çok kullanışlıdır. Verilen arama dizesinin dosyasındaki satır numarasını görüntüler:

grep -n "main" setup.py

8. Tüm Dizinlerde Bir Diziyi Yinelemeli Olarak Arayın

Geçerli dizinde tüm alt dizinlerle birlikte bir dize aramak istiyorsanız yinelemeli arama yapmak için –r seçeneğini belirleyebilirsiniz:

grep -r “function” *

9. Tüm Deseni Arayın

Grep'e -w seçeneğinin iletilmesi, dizedeki modelin tamamını arar. Örneğin şunları kullanarak:

ifconfig | grep -w "RUNNING"

Deseni içeren satırı tırnak içinde yazdırır. Öte yandan, şunu denerseniz:

ifconfig | grep -w "RUN"

Bir kalıp değil, tam bir kelime aradığımız için hiçbir şey döndürülmeyecektir.

10. Gzip'lenmiş Dosyalarda bir dize arayın

Biraz bahsetmeyi hak eden grep'in türevleridir. Bunlardan ilki, zcat'e benzeyen zgrep'tir ve gzip'li dosyalarda kullanıma yöneliktir. grep ile aynı seçenekleri alır ve aynı şekilde kullanılır:

zgrep -i error /var/log/syslog.2.gz

11. Dosyalardaki Normal İfadeleri Eşleştirin

Egrep komutu "Genişletilmiş Global Normal İfade" anlamına gelen başka bir türevdir. at + ? gibi ek ifade meta karakterlerini tanır. | ve ().

egrep komutu, ihtiyaç duyulması halinde kaynak dosyaları ve diğer kod parçalarını aramak için çok kullanışlıdır. -E seçeneği belirtilerek normal grep'ten çağrılabilir.

grep -E

12. Sabit Model Dizisini Arayın

fgrep komutu, sabit bir kalıp dizesi için bir dosyada veya dosya listesinde arama yapar. grep -F ile aynıdır. fgrep'i kullanmanın yaygın bir yolu, ona bir kalıp dosyası iletmektir:

fgrep –f file_full_of_patterns.txt file_to_search.txt

Bu, grep ile sadece bir başlangıç noktasıdır, ancak muhtemelen görebileceğiniz gibi, çeşitli amaçlar için paha biçilmezdir. Uyguladığımız basit tek satırlık komutların yanı sıra, grep, güçlü cron işleri ve sağlam kabuk komut dosyaları yazmak için kullanılabilir. başlangıç.

Yaratıcı olun, man sayfasındaki seçenekleri deneyin ve kendi amaçlarınıza hizmet edecek grep ifadeleri bulun!