2016-09-27 1 views
0

できるだけnumberに変換するsome_functionをjqで作成するにはどうすればよいですか?例えば:jq:できるだけ番号に変換する方法はありますが、そうでない場合はそのままにしますか?

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

だけで、私はエラーが発生した場合には、いくつかのフォールバックを持っていることができればTONUMBER()関数は、正常に動作します

123 
"12x3" 

を返します。 2つの潜在的な解決策は、例えばエラーハンドリングを可能にすることである。 iferror(xxx、result_if_error)、またはある種の「安全な」tonumber()関数を持つことができますが、どちらの解決策もjqで動作させる方法が見つかりません。アプローチをエラー処理のため

、私も試みた:

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

(ならびにユーザ定義関数と同等)無駄にします。私はそこにこの問題の簡単な解決策があると思っていますが、私はそれを見つけることができません。 tonumber? // .

するか、機能として:

答えて

1

あなたは、単に書くことができます

def tonumberq: tonumber? // .; 
+0

完璧な、ありがとう! – mwag

関連する問題