json - JQ - 如何在字段值以另一个字段值开头的条件下选择字段
问题描述
假设我有一个 json 项目列表。每个项目包含字段a
和b
。我很想得到一个 field 的值列表,a
使得 fielda
的值以 field 的值开头b
。例如,
{
"a": "1234",
"b": "123"
},
{
"a": "1234",
"b": "12"
},
{
"a": "foo",
"b": "bar"
}
会导致
"1234",
"1234"
使用jq可以实现吗?
解决方案
对于给定的输入数据,放入一个数组中,您可以使用startswith()
如下函数。您的输入 JSON 本身不是很有效,需要将对象包含在数组[..]
中jq
才能对其进行操作。
jq '.[] | .b as $data | select(.a | startswith($data) ).a'
或者,如果您想将结果保存为 CSV 格式,请执行
jq --raw-output '[.[] | .b as $data | select(.a | startswith($data) ).a] | @csv'
推荐阅读
- scala - Greenplum Spark Connector org.postgresql.util.PSQLException: ERROR: error when writing data to gpfdist
- html - 如何将 Html5 引导模板转换为 Vue 应用程序?
- android - 如何在使用 Xamarin.Android 连接到 WIFI 和 LTE 的 Android 设备上使用 UDP 多播?
- python - 如何销毁python中的对象?
- css - 缩小屏幕尺寸时调整宽度和高度
- python - Pandas - 从一列中提取短语并将其添加到新列
- javascript - NodeJS:如何/在哪里保存私有凭证 JSON 文件
- react-native - 选项卡导航器屏幕上的 IntialParams 未定义(反应导航 v5)
- r - How to read rsav file in R
- python - 为什么我的 OR 运算符不能在 python 中工作?