MYPATH=/var/www/html/error_logs/
TOTALFILE=$(ls $MYPATH* | wc -l)
FILETIME=$(stat --format=%y $MYPATH* | head -5 | cut -d'.' -f1)
FILE=$(ls -1tcr $MYPATH* | head -5 | rev | cut -d/ -f1 | rev)
TOPLINE=$(head -1 $MYPATH* | grep -Po '".*?"' | head -5)
como posso imprimir elegantemente essas informações de 5 arquivos em colunas com cabeçalhos?
FILE CREATED TIME | FILE NAME | ERROR HEADER
---------------------------------------------
$FILETIME | $FILE | $TOPLINE
2012-11-29 11:27:45 | 684939947465 | "SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)"
e assim por diante 5 arquivos
total files: $TOTALFILE
Existe alguma maneira fácil de conseguir o que eu quero?
nota: esta saída recebi quando eco todas as variáveis
2012-11-29 11:27:45 2012-11-29 11:27:41 2012-11-28 23:33:01 2012-11-26 10:23:37 2012-11-19 22:49:36
684939947465 1313307654813 1311411049509 1234980770182 354797376843
"SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)" "SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)" "Connection to localhost:6379 failed: Connection refused (111)" "An error occurred connecting to Redis." "SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)"
Respostas:
Você pode usar o comando shell 'coluna' para isso, verifique:
column
página MAN .Combine isso com um loop e você estará no negócio, por exemplo:
fonte
sed 's/^/ \* \*/g'
mudar as coisas da primeira coluna para a terceira. Trabalhou um prazer para mim.Eu recomendaria o uso
printf
, por exemplo:Onde
%-30s
significa reservar 30 caracteres para o argumento de entrada do tipo string. Os-
denota esquerda alinhamento.fonte
Eu iria com um loop
fonte
Não tenho certeza se é isso que você está fazendo, "colar" no unix pode organizar os arquivos na coluna; você pode precisar de printf para reformatar o sttdout. exemplo:
fonte
A resposta do @qnimbus é provavelmente a melhor para sistemas Linux, mas na Sun ou IBM (se você não tiver a sorte de usar um em 2019), este comando pode não estar disponível. Em vez disso, você pode usar o
pr
comando para obter o mesmo efeito. Nos exemplos da página vinculada, você pode usar o seguinte:para imprimir o arquivo
word.lst
em 3 colunas. Dito isto, isso é apenas parte de uma solução para o seu problema e, quanto ao resto, adiar para a resposta @qnimbus.fonte