ich suche in Dateien (Mails) nach ipv4 Adressen.
Funktioniert auch gut.
Beispiel
Code: Alles auswählen
grep 'Received: from' $dir2/* |grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" |uniq
Kann mir jemand helfen ?
Code: Alles auswählen
grep 'Received: from' $dir2/* |grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" |uniq
Probier malHuck Fin hat geschrieben:06.12.2023 21:30:55Jetzt hätte ich das auch gerne für ipv6 Adressen und bekomme es nicht hin.
Code: Alles auswählen
grep Received | grep -iEo '([0-9a-f]{1,4}:{1,2}){1,8}[0-9a-f]{1,4}'
Code: Alles auswählen
grep -iEo '([0-9a-f]{1,4}:{1,2}){4,8}[0-9a-f]{1,4}'
Code: Alles auswählen
grep -iEo '([0-9a-f]{1,4}:{1,2}){4}[0-9a-f]{1,4}'
Dann müsste man die Quantoren etwas anpassen
Code: Alles auswählen
grep "^Received: from" | sed 's/[Ii][Pp][Vv]6://g' | grep -Eo '[0-9a-fA-F]{0,4}(:[0-9a-fA-F]{0,4}){2,7}' | grep -Ev '\b[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}\b' | grep -Ev ':::'
Exzellent, Mr Livingston!Livingston hat geschrieben:08.12.2023 21:46:21Code: Alles auswählen
grep "^Received: from" | sed 's/[Ii][Pp][Vv]6://g' | grep -Eo '[0-9a-fA-F]{0,4}(:[0-9a-fA-F]{0,4}){2,7}' | grep -Ev '\b[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}\b' | grep -Ev ':::'
- Killt das störende "IPv6:"
- Matcht nach 0- bis 4-stelliger Hex-Zahl
- Matcht nach 2- bis 7-maligem Vorkommen von ":xxxx" (xxxx darf leer sein)
- Sortiert Uhrzeiten aus
- Sortiert unzulässige Kombinationen von 3 oder mehr Doppelpunkten aus
Wenn schon, dann bitte Sir Livingston!
Jawohl Sir
Hat die KI keine Lösung dafür? ChatGPT? Oder DeppGPT?
So ein Wort besteht ja aus "\b\w+\b", also "Wortgrenze Wortzeichen+ Wortgrenze". Das funktioniert auch mit Wortanfang und Wortende (\<, \>), aber ein Wortzeichen muss halt schon dabei sein. Willst du "::1" finden (auch am Zeichenkettenanfang), dann könntest du vielleicht sowas wie grep -Po "(^|\W)\K[0-9a-fA-F]{0,4}..." benutzen, mit \W=[^0-9a-zA-Z] als Nichtwortzeichen und \K (PCRE), was die Übereinstimmung davor verwirft. Oder auf die IPv6-Thematik ausgedehnt vielleicht sowas: grep -Po "(^|\W|[iI][pP][vV]6)\K[0-9a-fA-F]{0,4}...".Livingston hat geschrieben:10.12.2023 00:34:30Kleiner Nachschlag:
Beim ersten grep-Matching habe ich die Wortgrenzen '\b...\b' rausgenommen, da ich statt des anfänglichen grep "^Received: from" zum Testen einfach ipv6-Adressen mit echo in die Pipe gepustet habe. Mit echo ::1 kam dann aber mit '\b...\b' nix raus. Bin mir nicht sicher, warum. Liegt vielleicht daran, dass vor dem Ausdruck keine Wortgrenze liegt.
Jep, oder gleich [[:alnum:]] verwendencosinus hat geschrieben:10.12.2023 14:23:50Könntest du nicht auch die Großbuchstaben A-F wegrationalisieren, wenn du grep mit -i aufrufst?