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)
¿Cómo puedo imprimir con elegancia esta información de 5 archivos en columnas con encabezados?
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)"
y así sucesivamente 5 archivos
total files: $TOTALFILE
¿Hay alguna manera fácil de obtener lo que quiero?
nota: esta salida que obtuve cuando echo todas las variables
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)"
Respuestas:
Puede usar el comando de shell 'columna' para eso, verifique:
column
página MAN .Combine esto con un bucle y estará en el negocio, por ejemplo:
fuente
sed 's/^/ \* \*/g'
para cambiar las cosas de la primera columna a la tercera. Trabajó un placer para mí.Yo recomendaría usar
printf
, por ejemplo:Donde
%-30s
significa reservar 30 caracteres para el argumento de entrada de tipo cadena. El-
denota la alineación izquierda.fuente
Yo iría con un bucle
fuente
No estoy seguro de si esto es lo que está haciendo, "pegar" en Unix puede organizar los archivos en la columna, es posible que necesite printf para formatear el sttdout. ejemplo:
fuente
La respuesta de @qnimbus es probablemente la mejor para los sistemas Linux, pero en Sun o IBM (si no tiene la suerte de usar uno en 2019), este comando puede no estar disponible. En su lugar, podría usar el
pr
comando para obtener el mismo efecto. De los ejemplos en la página vinculada puede usar lo siguiente:para imprimir el archivo
word.lst
en 3 columnas. Dicho esto, esto es solo una parte de una solución a su problema y, por lo demás, difiero a la respuesta @qnimbus.fuente