
Как добавить переносы строк в egrep?
# nmap -sP 192.168.1.0/24 | egrep 'MAC|report'
Я хотел бы добавить перенос строки после каждой из двух строк. Какая самая эффективная стенография?
По сути, я хотел бы, чтобы результат был выведен следующим образом:
Nmap scan report for 192.168.1.7
MAC Address: C4:42:02:xx:xx:xx (Samsung Electronics Co.)
Nmap scan report for 192.168.1.8
MAC Address: 04:F1:3E:xx:xx:xx (Apple)
Nmap scan report for 192.168.1.10
MAC Address: 70:18:8B:xx:xx:xx (Hon Hai Precision Ind. Co.)
решение1
Я хотел бы добавить перенос строки после каждой из двух строк.
Решение этой буквальной проблемы заключается в следующем:здесь. В твоем случае:
nmap -sP 192.168.1.0/24 | egrep 'MAC|report' | sed '0~2 s/$/\n/g'
Однако я видел nmap
результаты, в которых в некоторых отчетах пропускалась MAC
строка, поэтому (вместо того, чтобы слепо подсчитывать строки) лучше добавлять новую строку перед каждым Nmap
, если только это не самая первая строка:
nmap -sP 192.168.1.0/24 | egrep 'MAC|report' | sed '1! s/^Nmap/\nNmap/'
решение2
Я придумал
nmap -sP 192.168.10/24 | egrep 'MAC|report|Host is up' | sed '/Host is/c\\r'
При этом выполняется поиск дополнительной строки «Host is up» и затем она заменяется на возврат каретки.
В результате получается следующий результат:
Nmap scan report for 192.168.1.1
MAC Address: 00:0E:C6:C7:93:38 (Asix Electronics)
Nmap scan report for (192.168.1.254)
MAC Address: 1C:C1:DE:80:53:55 (Hewlett Packard)
Nmap scan report for 192.168.1.250