Queries basteln mit vim

Aufgabe

100 Zeilen nach Vorgabe:
INSERT INTO … VALUES (177,1,2008-12-05,"folder",…);
statt dem Datum soll ein Unix Timestamp eingefügt werden:
INSERT INTO … VALUES (177,1,1228464000,"folder",…);

Lösung

mit vim:
:%s/\(\d\d\d\d-\d\d-\d\d\),/\=''.system('date -d "' . submatch(1) . '" +"%s"')[:-2].','/g

 Erklärung der einzelnen Teile

%s  search & replace
(\d\d\d\d-\d\d-\d\d\),   suche Pattern mit Format ‚2008-12-05,‘
\= sieh die folgenden Angaben als Expression
system Command ausführen
date -d "2008-12-05" +"%s"  Formatiere angegebenes Datum als Unix Timestamp
[:-2]  entferne den von date ausgegebenen Zeilenumbruch
(am Mac wäre das ein wenig zu adaptieren, weil hier date anders funktioniert)