Я передаю список шаблонов регулярных выражений grep
для сравнения с файлом системного журнала . Они обычно соответствуют IP-адресу и записи в журнале;
grep "1\.2\.3\.4.*Has exploded" syslog.log
Это просто список шаблонов, таких как "1\.2\.3\.4.*Has exploded"
часть, которую я передаю в цикле, поэтому я не могу передать, например, «-v».
Я запутался, пытаясь сделать обратное вышесказанному, строки НЕ совпадают с определенным IP-адресом и ошибкой, поэтому «! 1.2.3.4. * Разорвал» будет сопоставлять строки системного журнала для всего, кроме 1.2.3.4, сообщая мне, что он взорвался , Я должен иметь возможность включить IP, чтобы не совпадать.
Я видел различные подобные посты в StackOverflor, однако они используют шаблоны регулярных выражений, с которыми я не могу работать grep
. Кто-нибудь может привести рабочий пример для grep
пожалуйста?
ОБНОВЛЕНИЕ: Это происходит в сценарии, как это;
patterns[1]="1\.2\.3\.4.*Has exploded"
patterns[2]="5\.6\.7\.8.*Has died"
patterns[3]="\!9\.10\.11\.12.*Has exploded"
for i in {1..3}
do
grep "${patterns[$i]}" logfile.log
done
patterns[3]="\!9\.10\.11\.12.*Has exploded"
изменения patterns[3]="(?<!9\.10\.11\.12).*Has exploded"
иgrep "${patterns[$i]}" logfile.log
изменений в grep -P "${patterns[$i]}" logfile.log
PCRE по умолчанию предполагается большее количество метасимволов, поэтому, возможно, придется удалить некоторые экранированные из других соответствующих выражений.