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)
Comment puis-je imprimer élégamment ces informations de 5 fichiers dans des colonnes avec des en-têtes?
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)"
et ainsi de suite 5 fichiers
total files: $TOTALFILE
existe-t-il un moyen facile d'obtenir ce que je veux?
note: cette sortie que j'ai obtenue en faisant écho à chaque variable
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)"
Réponses:
Vous pouvez utiliser la commande shell 'colonne' pour cela, vérifiez:
column
page MAN .Combinez cela avec une boucle et vous êtes en affaires, par exemple:
la source
sed 's/^/ \* \*/g'
pour déplacer les choses de la première colonne à la troisième. Ça m'a fait plaisir.Je recommanderais d'utiliser
printf
, par exemple:Où
%-30s
signifie réserver 30 caractères pour l'argument d'entrée de type chaîne. Le-
dénote l'alignement à gauche.la source
J'irais avec une boucle
la source
Vous ne savez pas si c'est ce que vous faites, "coller" dans unix peut organiser les fichiers dans la colonne, vous devrez peut-être printf pour reformater le sttdout. Exemple:
la source
La réponse @qnimbus est probablement la meilleure pour les systèmes Linux, mais sur Sun ou IBM (si vous n'êtes pas assez chanceux pour en utiliser un en 2019), cette commande peut ne pas être disponible. Au lieu de cela, vous pouvez utiliser la
pr
commande pour obtenir le même effet. À partir des exemples de la page liée, vous pouvez utiliser les éléments suivants:pour imprimer le fichier
word.lst
en 3 colonnes. Cela dit, ce n'est qu'une partie d'une solution à votre problème et pour le reste je m'en remets à la réponse @qnimbus.la source