Grep Filterung und Zeilen davor löschen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
TimeMen
Beiträge: 24
Registriert: 24.04.2016 13:49:05
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Timbuktu
Kontaktdaten:

Grep Filterung und Zeilen davor löschen

Beitrag von TimeMen » 11.06.2016 18:12:48

Hallo Community,

Ich möchte mit grep die Ausgabe: "Nmap scan report for 192.168.XX.YY" filtern und die beinhaltende Zeile und die zwei Zeile davor löschen.
Ich würde für die IP Variablen verwenden, da ich das auch schon im Script vorher so gemacht habe.
Ich möchte also nur die Ausgaben aus der Datei löschen, bei denen Nmap zu keinem Ergebnis gekommen ist.
Wie kann ich das realisieren?

LG
TimeMen
Pitchblack darkness - no LIGHTS, no AIR, no SOUND ~ KYTEMAN ORCHESTRA

"In silent nights you can hear the Windows machines rebooting!"

Benutzeravatar
heisenberg
Beiträge: 4123
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Grep Filterung und Zeilen davor löschen

Beitrag von heisenberg » 11.06.2016 18:22:50

Mal so ein paar Beispiele

Zeige nur die Zeilen an, in den 80/tcp, 80/udp, 443/tcp, 443/udp steht:

Code: Alles auswählen

nmap -p80,443 www.debianforum.de | grep -E '(80|443)/(tcp|udp)'
Schneide die ersten 6 Zeilen ab und die letzten 3:

Code: Alles auswählen

nmap -p80,443 www.debianforum.de | tail -n +7 | tac | tail -n +3 | tac
Zeige Zeile 4 bis 9 an:

Code: Alles auswählen

nmap -p80,443 www.debianforum.de | sed -n -e '4,9p'
Erklärung dazu in Deinen deutschsprachigen Handbuchseiten.

Code: Alles auswählen

man grep
man tail
man tac
man sed
Nachtrag: sed-Beispiel. sed ist auch ganz praktisch hier.
Zuletzt geändert von heisenberg am 11.06.2016 20:18:29, insgesamt 2-mal geändert.

Benutzeravatar
TimeMen
Beiträge: 24
Registriert: 24.04.2016 13:49:05
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Timbuktu
Kontaktdaten:

Re: Grep Filterung und Zeilen davor löschen

Beitrag von TimeMen » 11.06.2016 20:08:19

Mal sehen wie ich das versuche einzubauen.
Das "Script" ist eh für einen Freund der das mit dem Scannen öfter mal braucht.

Danke :)
TimeMen
Pitchblack darkness - no LIGHTS, no AIR, no SOUND ~ KYTEMAN ORCHESTRA

"In silent nights you can hear the Windows machines rebooting!"

Benutzeravatar
Meillo
Moderator
Beiträge: 9233
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Grep Filterung und Zeilen davor löschen

Beitrag von Meillo » 11.06.2016 23:28:35

Die Zeilen vor etwas zu loeschen ist weitaus schwieriger als die Zeilen nach etwas zu loeschen, darum verwende tac(1). Etwa in der Art:

Code: Alles auswählen

ip='192\.168\.1\.2'
tac | sed "/Nmap scan report for $ip/,+2d" | tac
Oder:

Code: Alles auswählen

ip='192\.168\.1\.2'
tac | sed "/Nmap scan report for $ip/{N;N;d}" | tac
Use ed once in a while!

Antworten