#! /usr/bin/env bash
#
# Replace columns from "zeekctl status" output that are not predictable
# (such as PID) with Xs.  This script assumes that there is no "Peers" column
# in the output, unless the "--peers" command-line option is specified.
#
# If the "--peers" command-line option is given, then the "Peers" column
# is assumed to be present (and will not be replaced).
# If the "--time" command-line option is given, then the "Started" date/time
# columns are not replaced.

tcol=6
if [ "$1" = "--peers" ]; then
    tcol=7
fi

usetimefmt=0
if [ "$1" = "--time" ]; then
    usetimefmt=1
fi

awk -v tcol=${tcol} -v usetimefmt=${usetimefmt} '{
    if ( NR > 1 )
    {
        # Check the format of each field, and replace with Xs only if the
        # format is expected (some fields have unpredictable length, but
        # we need a constant-width string of Xs).
        if ( $5 ~ /^[0-9]+$/ ) { $5 = "XXXXX" }   # Pid

        if ( usetimefmt == 0) {
            # The "Started" column consists of three fields:
            tc=tcol;
            if ( $tc ~ /^[0-3][0-9]$/ ) { $tc = "XX" }
            tc++;
            if ( $tc ~ /^[A-Za-z]+$/ ) { $tc = "XXX" }
            tc++;
            if ( $tc ~ /^[0-2][0-9]:[0-5][0-9]:[0-5][0-9]$/ ) { $tc = "XX:XX:XX" }
        }
    }

    print
}'
