Я передаю список зразків регулярних виразів, grep
щоб перевірити наявність файлу syslog. Зазвичай вони відповідають IP-адресі та запису журналу;
grep "1\.2\.3\.4.*Has exploded" syslog.log
Це просто список шаблонів, як "1\.2\.3\.4.*Has exploded"
частина, яку я проходжу, в циклі, тому я не можу, наприклад, пропустити "-v".
Я розгублений, намагаючись зробити зворотне вищезазначене, НЕ збігаються рядки з певною IP-адресою та помилкою, так що "! 1.2.3.4. * Вибухнуло" буде відповідати рядкам syslog для будь-якого іншого, ніж 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 передбачають більше метахарактерів за замовчуванням, тому деякі шляхи, можливо, потрібно буде видалити з інших відповідних виразів.