Как Grep более одной строки, чтобы получить все содержимое потока - PullRequest
0 голосов
/ 23 ноября 2018

Как Grep более одной строки, чтобы получить все строки под этим потоком.Я уже пробовал grep -A, -B, -C, но, похоже, получаю больше или иногда меньше, чем мне нужно.

$cat text.txt
=====================================================================
[11-23-18 10:07:01:119]::Thread(ABC):request returned

[11-23-18 10:07:01:120]::Thread(ABC):Sending packet 'POST /aq/ConManager HTTP/1.1
Host: localhost:192.168.1.1
User-Agent: gSOAP/2.7
Content-Type: text/xml; charset=utf-8
Content-Length: 1149
Connection: keep-alive
Accept-Encoding: gzip, deflate
SOAPAction: ""

[11-23-18 10:07:01:121]::Thread(XYZ): doing request

[11-23-18 10:07:01:122]::Thread(XYZ): request returned

================================================================

Теперь, если я использую grep -A 10 ABC text.txt, он выдаст вседругие строки, такие как thread XYZ.При этом я хочу выводить только весь поток ABC и его строки. И если я использую только grep, он не будет выводить последующие строки после потока ABC.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Вот тот, который может или не может быть тем, что вы искали:

$ awk -v RS="" '/ABC/' file

Вывод:

=====================================================================
[11-23-18 10:07:01:119]::Thread(ABC):request returned
[11-23-18 10:07:01:120]::Thread(ABC):Sending packet 'POST /aq/ConManager HTTP/1.1
Host: localhost:192.168.1.1
User-Agent: gSOAP/2.7
Content-Type: text/xml; charset=utf-8
Content-Length: 1149
Connection: keep-alive
Accept-Encoding: gzip, deflate
SOAPAction: ""

Объяснено:

$ awk -v RS="" '  # use empty records as record separators
/ABC/             # if there is ABC in the record, print it
' file            
0 голосов
/ 23 ноября 2018

Вы можете использовать

awk '/^\[[^][]*]::Thread\(ABC\)/,/^$/' file > newfile

Соответствует блоку строк между двумя шаблонами, второй соответствует пустой строке, а первый соответствует:

  • ^- начало строки
  • \[ - [
  • [^][]* - 0+ символов, отличных от [ и ]
  • ]- ]
  • ::Thread\(ABC\) - ::Thread(ABC) подстрока

См. онлайн-демонстрацию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...