Ich habe Haufen von JSON-Dateien, die Web-Ereignisse enthält. Jedes Ereignis enthält eine Menge Zeug und ich versuche, IP-Adresse Anonymisierung zu tun (das letzte Segment der IP-Adressen durch 0 ersetzt) mit sed
.Suchen und Ersetzen letzten Segment der IP-Adressen mit sed
Kurz:
Wie Substrings wie "ip":"34.542.3.34"
von JSON-Dateien und wandeln sie auf "ip":"34.542.3.0"
zu finden?
Versuche:
- Zurücksetzen Ausgangspunkt mit
\K
sed -e 's/"ip":"[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.\K[0-9]{1,3}/0/g' file.json
Diese funktionieren würde, aber leider sed
scheint nicht Abstützpunkt Reseting beginnt.
- Negative Lookbehind
sed -e 's/(?<="ip":"[0-9]{3}\.[0-9]{3}\.[0-9]{3}\.)([0-9]{3})/0/g' file.json
Dies würde auch aber negativ Lookbehind scheint nicht nicht fest Breite assortions zu unterstützen. So wird [0-9]{1,3}
nicht unterstützt und daher wird dies nicht funktionieren.
- Passende Gruppen
Dritte Idee passende Gruppen zu verwenden war und so etwas wie dieses
sed -e 's/("ip":"[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|([0-9]{1,3})/\1\20/g' file.json
aber konnte nicht herausfinden, wie diese würde tatsächlich mit sed
arbeiten.
- Schreiben regex für jede mögliche Länge Option separat
Dies ist wahrscheinlich funktionieren würde, aber es wäre regex zu lang und kaum lesbar machen. Ich würde gerne eine bequemere und saubere Lösung finden.
Irgendwelche Vorschläge?
tun, um Ihre JSON-Dateien haben gleiches Format scructure (Level)? poste einen von ihnen – RomanPerekhrest