поиск grep + следующая строка


18

С помощью grepкоманды я нашел нужный мне текст следующим образом:

grep 'C02' ~/temp/log.txt Теперь, где бы я ни находил нужную строку, я хотел бы напечатать строку, следующую за найденной строкой.

Например, предположим, что желаемый текст - «abc», а abc находится в строке 12, я также хотел бы напечатать строку 13.


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

1
GNU grep делает это легко; posix не указывает флаг -A
Джефф Шаллер

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.