29 Mayıs 2020 Cuma

grep Matching Control - Eşleşmenin Nasıl Olacağını Kontrol Eder

Giriş
Bu seçenekler eşleşmenin nasıl olacağını kontrol eder.

-e seçeneği
Birden fazla örüntü belirtilebilir.

Örnek
Şöyle yaparız.
root@grep -e tire_id -e appID /path/to/*/vehicle/production.json
/path/to/000001_000002/vehicle/production.json:    "tire_id": "1305436516186552",
/path/to/000001_000002/vehicle/production.json:        "appID": "1164562920689523",
/path/to/000001_000079/vehicle/production.json:    "tire_id": "1815123428733289",
/path/to/000001_000079/vehicle/production.json:        "appID": "18412365908966538",
/path/to/000001_000088/vehicle/production.json:    "tire_id": "138477888324",
-f FILE seçeneği
Her satırda aranacak pattern olan dosya belirtilir.

Örnek ver

-i, --ignore-case seçeneği
Örnek
Şöyle yaparız. Büyük küçük harf farkı gözetmeden tüm "sahil" kelimelerini bulur
[root@localhost playground]# cat file1.log 
hello 
i am sahil 
i am software engineer 
Sahil is a software engineer
sahil is a software engineer
 
[root@localhost playground]# grep -i 'sahil' file1.log 
i am sahil 
Sahil is a software engineer
sahil is a software engineer
[root@localhost playground]# 

-v seçeneği 
invert match anlamına gelir.  Aranan şeye uymayanları gösterir.
Örnek
Elimizde şöyle iki dosya olsun.
$ echo -e "a\nb\nc\nd" > list1
$ echo -e "c\nd\ne\nf" > list2
list1'de olup list2'de olmayanları görmek için şöyle yaparız. Burada komuta parametre olarak önce list2 geçiliyor.
$ grep -vxFf list2 list1
a
b

-w, --word-regexp seçeneği

Eşleşmeyi sadece kelimeler için yapar. Açıklaması şöyle
Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or preceded by a non-word constituent character.
Örnek
Şöyle yaparız. Burada -E ile bir regex verilmiş ancak sadece kelimelere uygulanıyor
$ echo '1341 5415 fdad' |  grep -wE "[1-9]{1,5}" -o
1341
5415
Yani aslında şununla aynı şey. regex'in başına ve sonuna \b getirilmesi ile gibi
echo '1341 5415 fdad' | grep -E -o '\b[1-9]{1,5}\b'
Örnek
Şöyle yaparız.
if grep -wq -- "$user" "$file1" && grep -wq -- "$user" "$file2" ; then
   echo "string avail in both files"
elif grep -wq -- "$user" "$file1" "$file2"; then
   echo "string avail in only one file"
fi

-x, --line-regexp seçeneği

Örnek ver

Hiç yorum yok:

Yorum Gönder