Suchen und Entfernen von Zeilen aus einer Textdatei (Linux)

0

Ich habe eine Textdatei mit einer Liste von Adressen aus allen letzten Verbindungen. Ich habe folgenden Befehl ausgeführt:

netstat -natu | grep 'ESTABLISHED' > temp.txt 

Ich fuhr dann fort, alles in der Akte aber den IPs mit zu filtern:

grep -oP '(\d{1,3}\.){1,3}\d{1,3}' temp.txt > IPs.txt  

Jetzt frage ich mich, ob es eine Möglichkeit gibt, in dieser Textdatei eine Certian-IP zu finden und (wenn möglich) die Zeile vollständig zu entfernen. Grundsätzlich werden lokale Hostadressen (127.0.0.0) herausgefiltert, sodass nur die fremden Adressen übrig bleiben. Aber ich bin mir nicht sicher, wie ich das machen soll.

Wäre es einfacher, die lokalen IPs während dieses Vorgangs herauszufiltern oder sie einfach aus der resultierenden Textdatei herauszufiltern?

Wenn jemand irgendwelche Ideen hat, würde ich mich freuen, sie zu hören. Ich bin nicht sehr vertraut mit grep, aber ich lerne langsam ... Vielen Dank im Voraus.

user7980
quelle

Antworten:

0

Die Fremdadressen stehen in der Ausgabe von netstat bereits in einer anderen Spalte. grep -oVerwenden Sie awk, um nur die fremden IPs zu drucken, anstatt die lokalen und fremden IPs zu drucken:

netstat -natu | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 > IPs.txt

Das gibt Ihnen auch die Möglichkeit, die -nvon netstat zu entfernen, so dass Sie die Namen anstelle von IPs sehen können.

Und wenn Sie Duplikate entfernen möchten, leiten Sie das Ganze an sort -u


Bearbeiten:
Um die eigentliche Frage im Titel zu beantworten, können Sie mit dem folgenden Befehl alle Zeilen in der Datei entfernen, die genau die Loopback-IP enthalten:

sed -i '/^127.0.0.1$/ d' temp.txt

TheAmigo
quelle