Как исключить линии над целью - PullRequest
0 голосов
/ 12 апреля 2019

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

у меня есть файл с рекурсивным выводом, команда повторяется снова и снова.я хочу обрезать 0 результатов, потому что это единственное постоянное значение, результат попадания является неизвестной величиной.

единственная уникальная строка, которую я могу искать по необходимости, должна исключать 4 строки над ней, независимо от того, чтосодержание этих строк, и я не нашел ни одного поста с информацией, достаточно общей, чтобы соответствовать.

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

Path/Path/Path> search
[results]
[results]
2 entries found
Path/Path/Path> search
[result]
1 entry found
Path/Path/Path> search
0 entry found

1 Ответ

0 голосов
/ 13 апреля 2019

попробуйте это:

# Assumption: The data is in logile.txt

i=0
tac logfile.txt |\
while read -r line; do
   if [[ "${line:0:7}" == "0 entry" ]]; then
        i=0
        continue
   else
       ((i++))
       [[ $i -le 4 ]] && continue
   fi   
   echo "$line"
done | tac

выход:

Path/Path/Path> search
[results]
[results]
2 entries found
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...