Sed-Musterübereinstimmungsdatum

Sed-Musterübereinstimmungsdatum

Ich verstehe nicht, wie ich die Mustererkennung mit sed anwende.

In einer großen Datei möchte ich das folgende Datumsformat von dd.mm.yyyyin ersetzen dd/mm/yyyy, also im Wesentlichen die Punkte durch Schrägstriche. Die Datei enthält mehrere Vorkommen von Datumsangaben im angegebenen Format, Punkte am Ende von Sätzen usw. dürfen jedoch nicht geändert werden.

sed 's/\./\//g' <file_name> 

erledigt die Aufgabe, ändert sich aber jedes (.), daher brauche ich eine Möglichkeit, einen Mustervergleich durchzuführen.

Jede Hilfe wäre willkommen.

Danke

Antwort1

So funktioniert es:

sed 's/\([0-9][0-9]\)\.\([0-9][0-9]\)\.\([0-9]\{4\}\)/\1\/\2\/\3/g' file

Erläuterung:

s/                  # substitute
  \([0-9][0-9]\)    # group 1, 2 digits
  \.                # a dot
  \([0-9][0-9]\)    # group 2, 2 digits
  \.                # a dot
  \([0-9]\{4\}\)    # group 3, 4 digits
/
  \1                # content of group 1
  \/                # a slash
  \2                # content of group 2
  \/                # a slash
  \3                # content of group 3
/g                  # global flag

verwandte Informationen