2016-09-27 3 views
0

Wie kann ich some_function in jq erstellen, die wenn möglich in Zahl konvertiert wird, aber so belassen wie es ist, wenn nicht? z.B .:jq: wie in Zahl zu konvertieren, wenn möglich, aber verlassen wie es ist, wenn nicht?

echo '["123","12x3"]' | jq '.[] | some_function' 

zurückkehren würde

123 
"12x3" 

Die toNumber() Funktion in Ordnung funktionieren würde, ich, wenn nur einigen Rückfall im Fall eines Fehlers haben könnte. Ein paar mögliche Lösungen könnten entweder darin bestehen, eine Fehlerbehandlung zu ermöglichen, z. iferror (xxx, result_if_error), oder um eine Art "safe" tonumber() -Funktion zu haben, aber ich kann keinen Weg finden, um beide Lösungen in jq arbeiten zu lassen.

Für die Fehlerbehandlung Ansatz habe ich versucht, auch:

echo '["123","12x3"]' | jq 'map(try tonumber catch .) ' 

(sowie das Äquivalent als eine benutzerdefinierte Funktion) ohne Erfolg. Ich schätze, es gibt eine einfache Lösung für dieses Problem, aber ich kann es nicht finden.

Antwort

1

Sie können einfach schreiben: tonumber? // .

Oder als Funktion:

def tonumberq: tonumber? // .; 
+0

perfekt, danke! – mwag

Verwandte Themen