column Remove espaços em branco em substituições de processos

1

Eu tento exibir duas estatísticas do meu servidor nginx lado-a-lado. Minha primeira abordagem para isso é column e substituição de processo.

column <(
        echo "sorted by busiest access times:"
        egrep -v " /hs/|GET /favicon|GET / " $file |
                sed -e 's/^[^[]\+\[\|:..:.. .*//g; s/:/ /; s/\//-/g' |
                date -f - +'%Y-%m-%d %H:xx h' |
                uniq -c |
                sort -nk 1 |
                tail -25
) <(
        echo "recent access times:"
        egrep -v " /hs/|GET /favicon|GET / " $file |
                sed -e 's/^[^[]\+\[\|:..:.. .*//g; s/:/ /; s/\//-/g' |
                date -f - +'%Y-%m-%d %H:xx h' |
                uniq -c |
                tail -25
)

Torna-se:

sorted by busiest access times: recent access times:
80 2018-03-28 20:xx h           6 2018-03-29 23:xx h
81 2018-03-31 15:xx h           1 2018-03-30 01:xx h
82 2018-02-25 16:xx h           23 2018-03-30 08:xx h
83 2018-03-15 19:xx h           15 2018-03-30 09:xx h
84 2018-03-25 18:xx h           17 2018-03-30 11:xx h

Caramba, feia. Para onde foram os principais espaços brancos? OK, solução alternativa com paste :

paste -d '#' <(
        echo "sorted by busiest access times:"
        egrep -v " /hs/|GET /favicon|GET / " $file |
                sed -e 's/^[^[]\+\[\|:..:.. .*//g; s/:/ /; s/\//-/g' |
                date -f - +'%Y-%m-%d %H:xx h' |
                uniq -c |
                sort -nk 1 |
                tail -25
) <(
        echo "recent access times:"
        egrep -v " /hs/|GET /favicon|GET / " $file |
                sed -e 's/^[^[]\+\[\|:..:.. .*//g; s/:/ /; s/\//-/g' |
                date -f - +'%Y-%m-%d %H:xx h' |
                uniq -c |
                tail -25
) | column -ts '#'

Melhor. No entanto, os principais espaços em branco ainda estão ausentes:

sorted by busiest access times:  recent access times:
80 2018-03-28 20:xx h                  6 2018-03-29 23:xx h
81 2018-03-31 15:xx h                  1 2018-03-30 01:xx h
82 2018-02-25 16:xx h                 23 2018-03-30 08:xx h
83 2018-03-15 19:xx h                 15 2018-03-30 09:xx h
84 2018-03-25 18:xx h                 17 2018-03-30 11:xx h
...

Agora adiciono um <(echo) como a primeira substituição do processo:

paste -d '#' <(echo) <(
        echo "sorted by busiest access times:"
        egrep -v " /hs/|GET /favicon|GET / " $file |
                sed -e 's/^[^[]\+\[\|:..:.. .*//g; s/:/ /; s/\//-/g' |
                date -f - +'%Y-%m-%d %H:xx h' |
                uniq -c |
                sort -nk 1 |
                tail -25
) <(
        echo "recent access times:"
        egrep -v " /hs/|GET /favicon|GET / " $file |
                sed -e 's/^[^[]\+\[\|:..:.. .*//g; s/:/ /; s/\//-/g' |
                date -f - +'%Y-%m-%d %H:xx h' |
                uniq -c |
                tail -25
) | column -ts '#'

A saída torna-se:

  sorted by busiest access times:  recent access times:
       80 2018-03-28 20:xx h             6 2018-03-29 23:xx h
       81 2018-03-31 15:xx h             1 2018-03-30 01:xx h
       82 2018-02-25 16:xx h            23 2018-03-30 08:xx h
       83 2018-03-15 19:xx h            15 2018-03-30 09:xx h
       84 2018-03-25 18:xx h            17 2018-03-30 11:xx h
...

Melhor ainda, mas agora tenho dois espaços no início de cada linha, que não deveriam estar lá. Bem, eu poderia remover esses dois com um | sed -e 's/^..//' adicional após column , mas estou começando a pensar que estou perdendo o problema real aqui.

Qual é a melhor abordagem ou estou realmente fazendo certo? Ou posso fazer com que column mantenha os principais espaços em branco?

Estou usando o Manjaro se isso for importante.

    
por sjngm 31.03.2018 / 16:48

0 respostas