grep инвертировать не работает так, как я ожидал

Я пытаюсь извлечь некоторый текст из файлов журналов своего приложения, и я действительно не понимаю, почему он не работает ... Сначала я извлекаю каждую часть файла, которая может иметь то, что я хочу, а позже я хочу чтобы исключить те, которые имеют некоторые слова, которые я не хочу. Дело в том, что я хочу удалить весь блок, который нашел первый grep, а не только строку. Я пытаюсь это сделать:

grep -A 5 "header of start parts" file.log | grep -v "piece of unwanted words" -A 2 -B 3

Поэтому я подумал, что использование -A 2 и -B 3 удалит весь блок во втором grep, но это не то, что происходит. Это все еще дает мне результаты с нежелательными словами ... Это шаблон моего файла:

Some text to ignore
Some Text to ignore
header of start parts
line to get together
line to get together
line to get together
line to get together
line to get together
Some text to ignore
header of start parts
line to get together
line with piece of unwanted words
line to get together
line to get together
line to get together
A lot of other logs and this patterns repeating

Так что мой первый grep даст мне все случаи этого:

header of start parts
line to get together
line to get together
line to get together
line to get together
line to get together

и это:

header of start parts
line to get together
line with piece of unwanted words
line to get together
line to get together
line to get together

И второй grep, я хочу исключить весь этот второй блок, который я разместил. Спасибо за любую помощь заранее.

1
задан 30 December 2016 в 06:42

1 ответ

С тех пор grep услужливо разграничивает блоки контекста (по умолчанию, с помощью -- строки), Вы могли передать результат первого grep к awk в режим абзаца и исключить целый записи , которые соответствуют второму фрагменту:

$ grep -A5 "header of start parts" file.log | 
  awk -vRS='\n--\n' '!/line with piece of unwanted words/'
header of start parts
line to get together
line to get together
line to get together
line to get together
line to get together
0
ответ дан 30 December 2016 в 06:42
  • 1
    осторожность! этот ответ вреден. сделайте резервные копии. моей проблемой был " никакой звук в headphones" и после следования этим инструкциям I don' t имеют звук вообще (импульсное аудио показывает Фиктивное устройство). Ubuntu 18.10. – naXa 16 February 2019 в 10:03

Другие вопросы по тегам:

Похожие вопросы: