On Fri, Oct 29, 2021 at 05:26:53AM +0100, Dominic Raferd wrote:
> Always great to learn from a master! I had not used postqueue -j, json
> or jq until yesterday...
Here's a more convincing demo, mock partial "postqueue -j" output:
$ jq -cn '
now as $t
| range(10) as $d
| { queue_name: "hold"
, arrival_time: ($t-$d*86400-1)
, queue_id: "age\($d)"
}
'
{"queue_name":"hold","arrival_time":1635482357.190698,"queue_id":"age0"}
{"queue_name":"hold","arrival_time":1635395957.190698,"queue_id":"age1"}
{"queue_name":"hold","arrival_time":1635309557.190698,"queue_id":"age2"}
{"queue_name":"hold","arrival_time":1635223157.190698,"queue_id":"age3"}
{"queue_name":"hold","arrival_time":1635136757.190698,"queue_id":"age4"}
{"queue_name":"hold","arrival_time":1635050357.190698,"queue_id":"age5"}
{"queue_name":"hold","arrival_time":1634963957.190698,"queue_id":"age6"}
{"queue_name":"hold","arrival_time":1634877557.190698,"queue_id":"age7"}
{"queue_name":"hold","arrival_time":1634791157.190698,"queue_id":"age8"}
{"queue_name":"hold","arrival_time":1634704757.190698,"queue_id":"age9"}
Piping that into the filter:
$ jq -cn '
now as $t
| range(10) as $d
| { queue_name: "hold"
, arrival_time: ($t-$d*86400-1)
, queue_id: "age\($d)"
}
' |
jq -nr --argjson days 5 '
(now - 86400 * $days) as $too_old
| inputs
| select(.queue_name == "hold" and .arrival_time < $too_old)
| .queue_id
| select(test("^\\w+$")) # permit only valid queue-id syntax
'
age5
age6
age7
age8
age9
--
Viktor.