如何从JSON文件中同时提取指定字段并并排输出?
用jq同时提取JSON多字段并生成指定格式输出
原始JSON内容
{ "requestData": { "username": "admin" }, "eventTime": "2023-12-01T23:50:02.554+0000", "observer": { "id": "target" } }
期望输出
"username": "admin","eventTime": "2023-12-01T23:50:02.554+0000"
实现命令
可以用两种方式实现:
方式一:直接字符串插值
cat filename | jq -r '"\"username\": \"\(.requestData.username)\",\"eventTime\": \"\(.eventTime)\""'
-r参数让jq输出原始字符串,避免额外的引号包裹。- 通过
\(...)语法插入对应字段的值,手动构造目标格式的字符串。
方式二:构造临时对象后拼接
cat filename | jq -r '{"username": .requestData.username, "eventTime": .eventTime} | to_entries | map("\"\(.key)\": \"\(.value)\"") | join(",")'
- 先创建只包含目标字段的临时对象,再用
to_entries转成键值对数组。 - 用
map把每个键值对格式化为指定字符串,最后用join(",")拼接成一行。
内容的提问来源于stack exchange,提问作者Navaratnam
相关产品推荐
相关产品推荐

