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.