Grep mit Zeilenumbrüchen organisieren

Grep mit Zeilenumbrüchen organisieren

Wie kann ich Zeilenumbrüche zwischen meinen Egrep einfügen?

# nmap -sP 192.168.1.0/24 | egrep 'MAC|report'

Ich möchte nach jeder der beiden Zeilen einen Zeilenumbruch einfügen. Was ist die effizienteste Abkürzung?

Im Wesentlichen möchte ich, dass das Ergebnis wie folgt ausgegeben wird:

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.)

Antwort1

Ich möchte nach jeder der beiden Zeilen einen Zeilenumbruch einfügen.

Die Lösung dieses wörtlichen Problems istHier. In Ihrem Fall:

nmap -sP 192.168.1.0/24 | egrep 'MAC|report' | sed '0~2 s/$/\n/g'

Ich habe jedoch nmapAusgaben gesehen, bei denen in einigen Berichten die MACZeile fehlt. Daher (anstatt die Zeilen blind zu zählen) wäre es besser, vor jedem eine neue Zeile einzufügen Nmap, es sei denn, es steht in der allerersten Zeile:

nmap -sP 192.168.1.0/24 | egrep 'MAC|report' | sed '1! s/^Nmap/\nNmap/'

Antwort2

Ich hatte die Idee dass

nmap -sP 192.168.10/24 | egrep 'MAC|report|Host is up' | sed  '/Host is/c\\r'

Dadurch wird nach der zusätzlichen Zeichenfolge „Host is up“ gesucht und diese anschließend durch einen Wagenrücklauf ersetzt.

Das Ergebnis ist folgende Ausgabe:

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

verwandte Informationen