Мне нужно извлечь IP-адрес и путь к файлу из отчета Nessus с помощью текстового обработчика

grep -Po 'https?://\S+/\w\w/\w{1,10}\b'   bigfile.txt
1
10.08.2017, 17:41
4 ответа

sedраствор:

sed -E 's/^(([0-9]+\.){3}[0-9]+).*(C:\\.+) *HAS NOT BEEN PATCHED.*/\1 - \3/' reportfile
2
27.01.2020, 23:24
$ sed -E -n -e '/ HAS NOT BEEN PATCHED/ {
                  s/^(\[[^]]*\]).*([A-Z]:)/\1 - \2/;
                  s/ HAS NOT BEEN PATCHED.*//p}' nessus.log
[IP address] - C:\WINDOWS\SYSTEM32\GPPREF.DLL
[IP address] - C:\WINDOWS\SYSTEM32\BCRYPT.DLL
[IP address] - C:\WINDOWS\SYSTEM32\GPPREF.DLL
[IP address] - C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL12.ACT7\MSSQL\BINN\SQLSERVR.EXE

Для каждой строки, соответствующей HAS NOT BEEN PATCHED, удалите все, что находится между IP-адресом и первой буквой диска ([A-Z]:). «IP-адрес» определяется как все, что находится внутри квадратных скобок -в начале строки, кроме закрытой квадратной скобки --([^]]*). Затем удалите все, начиная с HAS NOT BEEN PATCHEDдо конца строки, и напечатайте измененную строку.

Я рекомендую использовать символ табуляции \tв качестве разделителя полей между IP-адресом и путем вместо-(пробел, тире, пробел ). Это облегчило бы дальнейшую работу.

Регулярные выражения / HAS NOT BEEN.../включают пробел в начале, чтобы избежать появления висящего символа пробела на выходе.

1
27.01.2020, 23:24
 sed -rn '/NOT BEEN PATCHED/ {s/(^\[.*\]).*C:(.*) HAS.*$/\1 - \2/p} ' filename

Сконцентрируйтесь на записях с надписью «НЕ БЫЛО ИСПРАВЛЕНО», а затем вытащите нужные нам разделы строки (в скобках ), заменив текст на разделы и два (IP-адреса и имя файла)

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

0
27.01.2020, 23:24

Решение Awk:

awk '/HAS NOT BEEN PATCHED/ { match($0,/\[.*\]/);ipadd=substr($0,RSTART,RLENGTH);match($0,/C.* HAS/);fle=substr($0,RSTART,RLENGTH-4);print ipadd" - "fle }' filename

Сопоставление шаблона с «НЕ БЫЛО ИСПРАВЛЕНО», а затем извлечение IP-адреса и имени файла с помощью функции сопоставления awk. Получите подраздел строки, связанный с IP-адресом и именем файла, используя возвращенные переменные RSTART и RLENGTH вместе с функцией substr awk. Распечатайте созданные переменные ipadd и fle.

0
27.01.2020, 23:24

Теги

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