Giriş
grep komutundaki seçenekler
- Matcher Selection
- Matching Control
- General Output Control
- Output Line Prefix Control
- Context Line Control
- File and Directory Selection
- Other Options
başlıkları altına toplanmış.
Exit Status
Örnek
Şöyle yaparız. Dosya yoksa 2 değeri döner
General Output Control yazısına taşıdım
grep komutundaki seçenekler
- Matcher Selection
- Matching Control
- General Output Control
- Output Line Prefix Control
- Context Line Control
- File and Directory Selection
- Other Options
başlıkları altına toplanmış.
Exit Status
Örnek
Şöyle yaparız. Dosya yoksa 2 değeri döner
grep "i am here" real-file
# Returns: 0 (via: echo $?)
grep "i am not here" real-file
# Returns: 1
grep "i am not here" not-a-file
# Returns: 2 (No such file or directory)
General Output ControlGeneral Output Control yazısına taşıdım
Matching Control
Matching Control yazısına taşıdımMatcher Selection
-E seçeneği
Extended regex kullan. Şöyle yaparız.
$ str='25 results [22 valid, 2 invalid, 1 undefined]'
grep -E -o '[0-9]+' <<<"$str"
Other Options--line-buffered seçeneği
Normalde grep kendi içindeki buffer dolduktan sonra çıktı verir. Bunu satır seviyesine düşürmek için şöyle yaparız.
( echo "LINE 1" ; sleep 1 ; echo "LINE 2" ; ) | grep --line-buffered LINE | cat
-U
Treat the file as binary
Örnek
Şöyle yaparız
echo "[INFO] Checking if ddl sources have UPPERCASE file names..."
/bin/ls -1 -I *svn* src/main/resources/ddl | grep -U -e "[a-z]"
if [ $? -eq 0 ]; then
echo "[ERROR] The above files have lowecase letters in their names!"
exit 1
else
echo "[INFO] ...done."
fi
-z, --null-data
Açıklaması şöyle
-z, --null-data
Treat input and output data as sequences of lines, each
terminated by a zero byte (the ASCII NUL character) instead of a
newline.
Açıklaması şöyle. Dolayısıyla normal kullanımda linefeed karakterini grep'lemek mümkün değil
Since grep is (by default) line-based, the linefeed characters are stripped out before pattern matching takes place.
Örnek
Elimizde şöyle iki dosya olsun
$ cat file1
this is a test:
test1
test2
and another one
$ cat file2
this is a test:
test1
test2
and another one
Şöyle yaparız. Burada sanki tüm dosya tek satır gibi düşünülebilir. İlk dosya eşleşmiyor çünkü test2'den sonra 2 tane \n karakteri yok.
$ grep -Pz '\n\ntest1\n\ntest2\n\n' file1
$
$ grep -Pz '\n\ntest1\n\ntest2\n\n' file2
this is a test:
test1
test2
and another one
File and Directory Selection
-a seçeneği
Açıklaması şöyle
-a, --textProcess a binary file as if it were text; this is equivalent to the --binary-files=text option.
-A seçeçeneği
After anlamına gelir. Eşleşen satırdan sonraki satırları da gösterir.
Örnek
Şöyle yaparız. -m1 ile ilk eşleme seçilir. Bu eşleşmeden sonra gelen 10 satırı görmek için -A10 kullanılır
grep -m1 -A10 PATTERN filename
-B seçeçeneği
Before anlamına gelir. Eşleşen satırdan önceki satırları da gösterir.
Örnek
Eşleşen satırdan önceki 5'inci satırı da çıktıda görmek için şöyle yaparız.
Elimizde şöyle bir veri olsun.
grep çıktısının renkleri GREP_COLORS ortam değişkeni ile atanır. Renkler şöyledir
Before anlamına gelir. Eşleşen satırdan önceki satırları da gösterir.
Örnek
Eşleşen satırdan önceki 5'inci satırı da çıktıda görmek için şöyle yaparız.
grep -r -i -B 5 -A 5 "match"
ÖrnekElimizde şöyle bir veri olsun.
cat db_systems.txt
"db-unique-name": "p00z5bj_iad2bj",
"db-workload": "OLTP",
"defined-tags": {},
"freeform-tags": {},
"id": "dfadfasfsadfasdfasdf",
"lifecycle-details": null,
"lifecycle-state": "AVAILABLE",
...
Burada lifecycle-state alanı AVAILABLE olan ve db-unique-name aradığımı değer olan kayıtları bulmak isteyelim. Şöyle yaparız. lifecycle-state alanına göre arama yapar ve çıktıya 6 satır öncesini de dahil ederiz. Daha sonra bu çıktı üzerinde bir daha grep yaparız.grep -B6 AVAILABLE file | grep db-unique-name
"db-unique-name": "p00z5bj_iad2bj",
Diğergrep çıktısının renkleri GREP_COLORS ortam değişkeni ile atanır. Renkler şöyledir
Red: ms=01;31Çıktıyı kırmızı yapmak için şöyle yaparız.
Green: ms=01;32
Yellow: ms=01;33
Blue: ms=01;34
export GREP_COLORS='ms=01;31'
Sarı için şöyle yaparız.export GREP_COLORS='ms=01;33:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'
Hiç yorum yok:
Yorum Gönder