Verilerin yapılandırıldığını varsayalım ki istediğiniz zaman önce ve sonra her zaman bir satır olacak, grep'in -A
(after) ve -B
(before) anahtarlarından yararlanıp eşleşmeden önce 1 satırı ve bundan sonra 1 satırı içermesini sağlayabilirsiniz :
$ grep -A 1 -B 1 "42B" sample.txt
Pseudo name=Apple
Code=42B
state=fault
Arama teriminden önce ve sonra aynı sayı satırlarını istiyorsanız, -C
(bağlam) anahtarını kullanabilirsiniz:
$ grep -C 1 "42B" sample.txt
Pseudo name=Apple
Code=42B
state=fault
Birden çok çizgiyi eşleştirirken daha sıkı olmak isterseniz, pcregrep
bir deseni birden çok çizgiyle eşleştirmek için aracı kullanabilirsiniz :
$ pcregrep -M 'Pseudo.*\n.*42B.*\nstate.*' sample.txt
Pseudo name=Apple
Code=42B
state=fault
Yukarıdaki desen aşağıdaki gibi eşleşir:
-M
- çoklu çizgiler
'Pseudo.*\n.*42B.*\nstate.*'
- ilk dizginin kelimenin "Pseudo"
ardından başlayan, bir satırın sonuna \n
kadar "42B"
herhangi bir karakterin \n
ardından geldiği, ardından başka bir satırın ( ) sonuna kadar herhangi bir karakterin ardından gelen bir dizgenin bulunduğu bir dizge grubuyla eşleşir. "state"
ardından herhangi bir karakter