使用换行符组织 grep

使用换行符组织 grep

如何在 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

相关内容