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.
Tags text-formatting columns