grep снизу и отображение строк после матча

Как решить эту задачу, я вытащил свинину, ежедневно обновляющую новые подписи к sid_changes.log, и вот ключевое слово поиска «Новые правила», я хотел сделать поиск снизу for sid_changes.log и разделить эту строку после соответствия «Новый Правила »в новый файл, я ознакомился с grep -A ,-B, но эти флаги ожидают номера строк, и я не могу определить номер строки, поскольку он будет динамическим .... поэтому эти флаги мне не нужны.

Я пробовал до сих пор с командой diff diff --changed-group-format="%>" --unchanged-group-format="" data1 data2 и есть ли лучшая техника, потому что мне нужно установить задания cron, чтобы сначала скопировать sid_changes.log, прежде чем он будет обновлен, а затем разнести его с новым sid_changes.log, так что это выглядит испорченным решением ... Я ожидаю лучшего решения или дизайна для этого.

sid_changes.log
-=Begin Changes Logged for Wed Jan  2 19:05:09 2018 GMT=-

New Rules
        Reported CnC Server Port 40669 Group 1 (1:2405179)
        Server Port 45351 Group 1 (1:2405180)

-=Begin Changes Logged for Wed Jan  3 19:05:09 2018 GMT=-

New Rules
        ET CNC Shadowserver Reported CnC Server Port 40669 Group 1 (1:2405179)
        ET CNC Shadowserver Reported CnC Server Port 45351 Group 1 (1:2405180)
        ET CNC Shadowserver Reported CnC Server Port 47221 Group 1 (1:2405181)

-=Begin Changes Logged for Thu Jan  4 19:05:01 2018 GMT=-

New Rules
        BROWSER-OTHER Apple Safari javascript mutlibyte character escaping denial of service attempt (1:45354)
        BROWSER-OTHER Apple Safari javascript mutlibyte character escaping denial of service attempt (1:45355)
        BROWSER-OTHER Multiple browser long unicode string denial of service attempt (1:45302)
        BROWSER-OTHER Multiple browser long unicode string denial of service attempt (1:45303)
        BROWSER-PLUGINS UCanCode ActiveX clsid access attempt (1:45270)



ouputfile.log
-=Begin Changes Logged for Thu Jan  4 19:05:01 2018 GMT=-

New Rules
        BROWSER-OTHER Apple Safari javascript mutlibyte character escaping denial of service attempt (1:45354)
        BROWSER-OTHER Apple Safari javascript mutlibyte character escaping denial of service attempt (1:45355)
        BROWSER-OTHER Multiple browser long unicode string denial of service attempt (1:45302)
        BROWSER-OTHER Multiple browser long unicode string denial of service attempt (1:45303)
        BROWSER-PLUGINS UCanCode ActiveX clsid access attempt (1:45270)

0
задан 5 January 2018 в 15:59

2 ответа

Я использовал бы a perl управляйте как это:

perl -ne 'if($_=~/^-=Begin/){@last=@block; @block=(); push(@block,$_);}else{push(@block,$_)}; END{@last=@block; print @last}'

Объяснение:

  • perl -ne ' -> чтение ввело мудрую строку
  • if($_=~/^-=Begin/){@last=@block; @block=();push(@block,$_);} -> сбрасывают последний блок, чтобы выстроить в последний раз и запустить новый блок, если строка начинается - =Begin
  • else{push(@block,$_)}; -> добавляют текущую строку для блокирования
  • END{@last=@block; print @last}' -> сбрасывают последний блок и печать это


Читать из sid_changes.log и запишите в outfile.log, можно выполнить его как это:

perl -ne '...' < sid_changes.log > outfile.log
1
ответ дан 5 January 2018 в 15:59
  • 1
    Просто для уточнения вещи, я нажал, прибавляют мобильную широкополосную вкладку, все хорошо работает до, когда я должен был ввести число, имя пользователя, & пароль; поля неактивны, и кнопка сохранения также неактивна. Как я делаю эти поля доступными для редактирования? Спасибо – Imman 2 June 2012 в 02:51
  • 2
    Просто для уточнения вещи, я нажал, прибавляют мобильную широкополосную вкладку, все хорошо работает до, когда я должен был ввести число, имя пользователя, & пароль; поля неактивны, и кнопка сохранения также неактивна. Как я делаю эти поля доступными для редактирования? Спасибо – Imman 2 June 2012 в 02:51
  • 3
    Просто для уточнения вещи, я нажал, прибавляют мобильную широкополосную вкладку, все хорошо работает до, когда я должен был ввести число, имя пользователя, & пароль; поля неактивны, и кнопка сохранения также неактивна. Как я делаю эти поля доступными для редактирования? Спасибо – Imman 2 June 2012 в 02:51
  • 4
    Просто для уточнения вещи, я нажал, прибавляют мобильную широкополосную вкладку, все хорошо работает до, когда я должен был ввести число, имя пользователя, & пароль; поля неактивны, и кнопка сохранения также неактивна. Как я делаю эти поля доступными для редактирования? Спасибо – Imman 2 June 2012 в 02:51
  • 5
    Просто для уточнения вещи, я нажал, прибавляют мобильную широкополосную вкладку, все хорошо работает до, когда я должен был ввести число, имя пользователя, & пароль; поля неактивны, и кнопка сохранения также неактивна. Как я делаю эти поля доступными для редактирования? Спасибо – Imman 2 June 2012 в 02:51
  • 6
    Просто для уточнения вещи, я нажал, прибавляют мобильную широкополосную вкладку, все хорошо работает до, когда я должен был ввести число, имя пользователя, & пароль; поля неактивны, и кнопка сохранения также неактивна. Как я делаю эти поля доступными для редактирования? Спасибо – Imman 2 June 2012 в 02:51

Вы можете использовать grep, чтобы найти номер строки разделителя записей журнала последних событий, а затем использовать tail, чтобы печатать только строки из них:

lineno="$(grep -ne '^-=' sid_changes.log | tail -n 1 | cut -d ':' -f 1)"
tail -n "+$lineno" sid_changes.log > outfile.log

или как однострочник

tail -n "+$(grep -ne '^-=' sid_changes.log | tail -n 1 | cut -d ':' -f 1)" sid_changes.log > outfile.log

Если вход является не файлом, а каналом / FIFO, и вы можете проходить по нему только тогда, когда можете использовать небольшую программу, которая отслеживает записи журнала, но возвращает только последнюю:

#!/usr/bin/env python3
import sys

separator_prefix = '-='
last_entry = []

for line in sys.stdin:
    if line.startswith(separator_prefix):
        last_entry.clear()
    last_entry.append(line)

print(*last_entry, sep='', end='')

Использование:

python3 last-chang-entry.py < sid_changes.log > outfile.log
0
ответ дан 5 January 2018 в 15:59
  • 1
    Действительно ли Вы - административный пользователь?? Для проверки войдите в учетные записи пользователей в меню учетных записей в панели и проверке, если пользовательский тип является администратором или стандартом – Nirmik 2 June 2012 в 13:11
  • 2
    Действительно ли Вы - административный пользователь?? Для проверки войдите в учетные записи пользователей в меню учетных записей в панели и проверке, если пользовательский тип является администратором или стандартом – Nirmik 2 June 2012 в 13:11
  • 3
    Действительно ли Вы - административный пользователь?? Для проверки войдите в учетные записи пользователей в меню учетных записей в панели и проверке, если пользовательский тип является администратором или стандартом – Nirmik 2 June 2012 в 13:11
  • 4
    Действительно ли Вы - административный пользователь?? Для проверки войдите в учетные записи пользователей в меню учетных записей в панели и проверке, если пользовательский тип является администратором или стандартом – Nirmik 2 June 2012 в 13:11
  • 5
    Действительно ли Вы - административный пользователь?? Для проверки войдите в учетные записи пользователей в меню учетных записей в панели и проверке, если пользовательский тип является администратором или стандартом – Nirmik 2 June 2012 в 13:11
  • 6
    Действительно ли Вы - административный пользователь?? Для проверки войдите в учетные записи пользователей в меню учетных записей в панели и проверке, если пользовательский тип является администратором или стандартом – Nirmik 2 June 2012 в 13:11

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

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