Ich ziehe JSON von einem REST-Endpunkt mit curl und analysiere ihn dann mit dem Knotenpaket json, um einige der JSON-Attribute abzurufen, die ich später in einigen App-Konfigurationen verwende.
curl -s http://52.71.126.196/arcgis/rest/services/WaterNetwork/MapServer/0?f=pjson | json -a fields | json -a name
..was gibt:
OBJECTID SHAPE FACILITYID ACCOUNTID METSERVICE SERVICETYPE INSTALLDATE LOCDESC ROTATION LOCATIONID CRITICAL ENABLED ACTIVEFLAG OWNEDBY MAINTBY LASTUPDATE LASTEDITOR BILLINGNAME SERVICECODE CYCLECODE RATETABLE SERVICESIZE REMSERIALNUMBER METERMULTIPLIER LONGITUDE LATITUDE METERPULL
Perfekt. Was ich aber wirklich brauche, sind diese in einem Array, wie zum Beispiel:
["OBJECTID", "SHAPE", "FACILITYID", "ACCOUNTID", "METSERVICE", "SERVICETYPE", "INSTALLDATE", "LOCDESC", "ROTATION", "LOCATIONID", "CRITICAL", "ENABLED", "ACTIVEFLAG", "OWNEDBY", "MAINTBY", "LASTUPDATE", "LASTEDITOR", "BILLINGNAME", "SERVICECODE", "CYCLECODE", "RATETABLE", "SERVICESIZE", "REMSERIALNUMBER", "METERMULTIPLIER", "LONGITUDE", "LATITUDE", "METERPULL"]
Ich fand einen Befehl mit xargs und sed und hackte ihn, um mich teilweise dorthin zu bringen:
curl -s http://52.71.126.196/arcgis/rest/services/WaterNetwork/MapServer/0?f=pjson | json -a fields | json -a name | xargs echo | sed 's/ /", "/g'
... was gibt:
OBJECTID", "SHAPE", "FACILITYID", "ACCOUNTID", "METSERVICE", "SERVICETYPE", "INSTALLDATE", "LOCDESC", "ROTATION", "LOCATIONID", "CRITICAL", "ENABLED", "ACTIVEFLAG", "OWNEDBY", "MAINTBY", "LASTUPDATE", "LASTEDITOR", "BILLINGNAME", "SERVICECODE", "CYCLECODE", "RATETABLE", "SERVICESIZE", "REMSERIALNUMBER", "METERMULTIPLIER", "LONGITUDE", "LATITUDE", "METERPULL
Außerdem muss ich unbedingt auch die Aliasdaten abrufen können:
curl -s http://52.71.126.196/arcgis/rest/services/WaterNetwork/MapServer/0?f=pjson | json -a fields | json -a alias OBJECTID SHAPE Facility Identifier Account Number Metered Service Service Type Install Date Location Description Rotation Location Identifier CriticalCustomer Enabled Active Flag Owned By Managed By Last Update Date Last Editor BILLINGNAME SERVICECODE CYCLECODE RATETABLE SERVICESIZE REMSERIALNUMBER METERMULTIPLIER LONGITUDE LATITUDE METERPULL
Mein xargs / sed-Befehl bricht hier zusammen, da in den Aliasnamen Leerzeichen stehen:
curl -s http://52.71.126.196/arcgis/rest/services/WaterNetwork/MapServer/0?f=pjson | json -a fields | json -a alias | xargs echo | sed 's/ /", "/g'
Wie Sie sehen, trennt es jedes Wort durch Leerzeichen, nicht was ich brauche.
OBJECTID", "SHAPE", "Facility", "Identifier", "Account", "Number", "Metered", "Service", "Service", "Type", "Install", "Date", "Location", "Description", "Rotation", "Location", "Identifier", "CriticalCustomer", "Enabled", "Active", "Flag", "Owned", "By", "Managed", "By", "Last", "Update", "Date", "Last", "Editor", "BILLINGNAME", "SERVICECODE", "CYCLECODE", "RATETABLE", "SERVICESIZE", "REMSERIALNUMBER", "METERMULTIPLIER", "LONGITUDE", "LATITUDE", "METERPULL
... und hier versagt mir mein xargs / sed foo. Ich bin mir nicht sicher, ob es sich um eine Xargs-Sache oder eine Sed-Sache handelt und ob ich einen Regex zum Sed übergeben muss, um mit den möglichen Leerzeichen in den Aliasnamen fertig zu werden. Gibt es einen Befehl xargs / sed, der mir die Ergebnisse für Namen und Aliase in der obigen Array-Form liefert?