简单的jq命令行查询
Simple jq command line query
我有一个更大的数据集,但这是我的 json 文件的示例。
{"units": {
"1000000043579e28": {
"1_hostname": "unit-a",
"3_lastCheckIn": "08/31/21 16:00",
"screensProcesses": [
"file1",
"file2" ]},
"10000000553ff4cd": {
"1_hostname": "unit-b",
"3_lastCheckIn": "08/31/21 16:00",
"screensProcesses": [
"file1" ]}
}}
我想在 linux 中使用 jq 二进制文件。我正在尝试执行 2 个查询。
- 少于 2 个“screenProcesses”的单元。
- 超过 24 小时未签到的单元。 (如果需要,我可以修改在 json 文件中写入日期的方式。
您可能希望将其分成两个问题,因为 #1 相对简单 select 而 #2,处理时间计算本身就是一个主题。在任何情况下,对于#1,您可以使用 with_entries
将 units
转换为具有 key
和 value
字段的一系列地图,对具有 select
和再次转换回来。
$ jq '{"units": .units | with_entries(select(.value."screensProcesses" | length < 2))}' file.json
{
"units": {
"10000000553ff4cd": {
"1_hostname": "unit-b",
"3_lastCheckIn": "08/31/21 16:00",
"screensProcesses": [
"file1"
]
}
}
}
我有一个更大的数据集,但这是我的 json 文件的示例。
{"units": {
"1000000043579e28": {
"1_hostname": "unit-a",
"3_lastCheckIn": "08/31/21 16:00",
"screensProcesses": [
"file1",
"file2" ]},
"10000000553ff4cd": {
"1_hostname": "unit-b",
"3_lastCheckIn": "08/31/21 16:00",
"screensProcesses": [
"file1" ]}
}}
我想在 linux 中使用 jq 二进制文件。我正在尝试执行 2 个查询。
- 少于 2 个“screenProcesses”的单元。
- 超过 24 小时未签到的单元。 (如果需要,我可以修改在 json 文件中写入日期的方式。
您可能希望将其分成两个问题,因为 #1 相对简单 select 而 #2,处理时间计算本身就是一个主题。在任何情况下,对于#1,您可以使用 with_entries
将 units
转换为具有 key
和 value
字段的一系列地图,对具有 select
和再次转换回来。
$ jq '{"units": .units | with_entries(select(.value."screensProcesses" | length < 2))}' file.json
{
"units": {
"10000000553ff4cd": {
"1_hostname": "unit-b",
"3_lastCheckIn": "08/31/21 16:00",
"screensProcesses": [
"file1"
]
}
}
}