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)
Wie kann ich diese 5 Dateiinformationen elegant in Spalten mit Überschriften ausdrucken?
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)"
und so weiter 5 Dateien
total files: $TOTALFILE
Gibt es eine einfache Möglichkeit, das zu bekommen, was ich will?
Hinweis: Diese Ausgabe habe ich bekommen, wenn jede Variable echo
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)"
Antworten:
Sie können dazu den Shell-Befehl 'column' verwenden, siehe:
column
MAN-Seite .Kombiniere dies mit einer Schleife und du bist im Geschäft, zB:
quelle
sed 's/^/ \* \*/g'
um Dinge von der ersten Spalte in die dritte zu verschieben. Hat mir was Gutes getan.Ich würde empfehlen
printf
, zB:Dabei werden
%-30s
30 Zeichen für das Eingabeargument vom Typ string reserviert. Das-
kennzeichnet linke Ausrichtung.quelle
Ich würde mit einer Schleife gehen
quelle
Wenn Sie nicht sicher sind, ob Sie dies möchten, können Sie durch "Einfügen" in Unix Dateien in Spalten anordnen. Möglicherweise benötigen Sie printf, um das sttdout neu zu formatieren. Beispiel:
quelle
Die @ qnimbus-Antwort ist wahrscheinlich am besten für Linux-Systeme geeignet, aber unter Sun oder IBM (wenn Sie nicht das Glück haben, 2019 eine zu verwenden) ist dieser Befehl möglicherweise nicht verfügbar. Stattdessen können Sie den
pr
Befehl verwenden , um den gleichen Effekt zu erzielen. In den Beispielen auf der verlinkten Seite können Sie Folgendes verwenden:um die Datei
word.lst
in 3 Spalten zu drucken . Das heißt, dies ist nur ein Teil einer Lösung für Ihr Problem und für den Rest schiebe ich mich auf @ qnimbus Antwort.quelle