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.

Reply via email to