Ich würde gerne den Ersteller einer beliebigen Relation aus dem History-XML ermitteln. Beispielhaft nehme ich die Relation 7129340.
Ich versuche mich an einer Lösung mit grep, allerdings ist auch jede Lösung mit anderen Tools willkommen. Wer Windows benutzt, braucht hier das Linux Subsystem um mitreden zu können.
Osmium Tool mit opl Ausgabeformat ist hier angesagt. Am besten zunächst einen Blick in die Doku werfen, dort gibt es ausreichend viele Beispiele.
Es macht auch wenig Sinn, die komplette History abzufragen, wenn man genauso gut gleich die Version 1 anfordern kann, sogar für mehrere Relationen gleichzeitig.
grep weiß ja nicht, welchen Teil des Strings es “only matchen” soll, das kann man nur durch weitere greps in der pipe erreichen, wenn man sich auf grep beschränken will. In sed lässt sich die Auswahl der Zeile (version=“1”) und das Filtern einzelner Wörter innerhalb dieser mit “(”, “)” und “\1” besser kombinieren:
curl -s https://www.openstreetmap.org/api/0.6/relation/7129340/history | sed 's/.*version="1".*user="\(.*\)".*/\1/'
Darauf bin ich im ersten Teil meiner Antwort eingegangen! Xml->opl konvertieren und dann Greppen ist viel einfacher als sich direkt mit xml rumzuschlagen.
Sieht doch schon fast gut aus, das “history” in der URL kann weg, und den " v1 " grep lasse ich auch schon weg (das ist schon über die URL sichergestellt):
Diese leeren Versionen entstehen durch Redaction (=Ausblenden von Versionen wg. Copyright Problemen und ähnlichem). Man könnte das über die History lösen und diese nach Erzeugungszeitpunkt aufsteigend sortieren, dann die erste Zeile rausziehen und dort den Bearbeiter ermitteln. Hier im Beispiel ist das der “OSMF Redaction Account”.