пошук grep + наступний рядок


18

За допомогою grepкоманди я знайшов потрібний мені текст наступним чином:

grep 'C02' ~/temp/log.txt Тепер, де б я не знайшов потрібний рядок, я хотів би надрукувати рядок, наступний за знайденим рядком.

Наприклад, скажімо, що потрібний текст є "abc", а abc знаходиться в рядку 12, я також хотів би надрукувати рядок 13.


3
grep -A1 'abc' ~/temp/log.txtдля 1 рядка контексту А для початку матчу - дивіться Context Line Controlпідрозділ посібника ( man grep)
steeldriver

1
гну греп полегшує; posix не вказує прапор -A
Jeff Schaller

1
привіт і Ласкаво просимо до Stack Exchange! на SE, очікується, що ви зробите кілька основних досліджень, перш ніж приїхати сюди на допомогу. наприклад, пошук "grep show next line" повернув непряму відповідь у першому результаті та пряму відповідь у другому. що ви зробили, щоб спробувати вирішити цю проблему вже?
strugee

Відповіді:


25

Якщо ви використовуєте систему Linux, ви можете спробувати:

grep -A1 "C02" ~/temp/log.txt


OPTIONS
       -A NUM, --after-context=NUM
              Print NUM lines of trailing context after matching lines.  Places a line containing -- between contiguous groups of matches.
       -B NUM, --before-context=NUM
              Print NUM lines of leading context before matching lines.  Places a line containing -- between contiguous groups of matches.
       -C NUM, --context=NUM
              Print NUM lines of output context.  Places a line containing -- between contiguous groups of matches.

Ви можете використовувати awk також як:

awk '/C02/{print;getline;print}' ~/temp/log.txt

1
також,sed -n '/C02/{N; p}' ~/temp/log.txt
Sundeep
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.