Припустимо, що дані структуровані так, що це завжди лінія до і після цього, яку ви хочете, ви можете використовувати перемикачі grep -A
(після) та -B
(до), щоб сказати, що вона включає 1 рядок перед матчем та 1 рядок після нього:
$ grep -A 1 -B 1 "42B" sample.txt
Pseudo name=Apple
Code=42B
state=fault
Якщо вам потрібні однакові рядки до і після пошукового терміну, ви можете скористатися -C
(контекстним) перемикачем:
$ grep -C 1 "42B" sample.txt
Pseudo name=Apple
Code=42B
state=fault
Якщо ви хочете бути більш суворими при збігу декількох рядків, ви можете скористатися інструментом pcregrep
, щоб відповідати шаблону по декількох рядках:
$ pcregrep -M 'Pseudo.*\n.*42B.*\nstate.*' sample.txt
Pseudo name=Apple
Code=42B
state=fault
Наведений вище зразок відповідає наступному:
-M
- кілька рядків
'Pseudo.*\n.*42B.*\nstate.*'
- відповідає групі рядків, де перша рядок починається зі слова, "Pseudo"
за яким слідують будь-які символи до кінця рядка \n
, а потім будь-які символи вгору до тих пір, поки рядок не "42B"
супроводжується будь-якими символами до іншого кінця рядка ( \n
), а потім рядок "state"
слідом за будь-якими символами.