jq:如果可能,如何转换为数字,如果不能,则保持原样?
jq: how to convert to number if possible, but leave as is, if not?
如何在 jq 中创建 some_function,如果可能,它会转换为数字,但如果不能,则保持原样?例如:
echo '["123","12x3"]' | jq '.[] | some_function'
会return
123
"12x3"
tonumber() 函数可以正常工作,如果我能在发生错误时有一些回退的话。一些潜在的解决方案可能是允许错误处理,例如iferror(xxx, result_if_error),或具有某种 "safe" tonumber() 函数,但我找不到在 jq 中使用任一解决方案的方法。
错误处理方式,我也尝试过:
echo '["123","12x3"]' | jq 'map(try tonumber catch .) '
(以及等效的用户定义函数)无济于事。我猜这个问题有一个简单的解决方案,但我似乎找不到它。
你可以简单地写:tonumber? // .
或作为函数:
def tonumberq: tonumber? // .;
如何在 jq 中创建 some_function,如果可能,它会转换为数字,但如果不能,则保持原样?例如:
echo '["123","12x3"]' | jq '.[] | some_function'
会return
123
"12x3"
tonumber() 函数可以正常工作,如果我能在发生错误时有一些回退的话。一些潜在的解决方案可能是允许错误处理,例如iferror(xxx, result_if_error),或具有某种 "safe" tonumber() 函数,但我找不到在 jq 中使用任一解决方案的方法。
错误处理方式,我也尝试过:
echo '["123","12x3"]' | jq 'map(try tonumber catch .) '
(以及等效的用户定义函数)无济于事。我猜这个问题有一个简单的解决方案,但我似乎找不到它。
你可以简单地写:tonumber? // .
或作为函数:
def tonumberq: tonumber? // .;