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)
jak mogę elegancko wydrukować tę informację o 5 plikach w kolumnach z nagłówkami?
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)"
i tak dalej 5 plików
total files: $TOTALFILE
czy jest jakiś prosty sposób na zdobycie tego, czego chcę?
Uwaga: to wyjście mam, gdy echo każdej zmiennej
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)"
Odpowiedzi:
Możesz w tym celu użyć polecenia powłoki „kolumna”, sprawdź:
column
strona MAN .Połącz to z pętlą i jesteś w biznesie, np .:
źródło
sed 's/^/ \* \*/g'
do przenoszenia rzeczy z pierwszej kolumny na trzecią. Pracowała dla mnie uczta.Poleciłbym użyć
printf
np .:Gdzie
%-30s
oznacza zarezerwowanie 30 znaków dla argumentu wejściowego typu string. W-
oznacza lewy wyrównania.źródło
Poszedłbym z pętlą
źródło
Nie jestem pewien, czy to jest to, co zamierzasz, „wklej” w Uniksie może uporządkować pliki w kolumnie, może być konieczne printf, aby sformatować sttdout. przykład:
źródło
Odpowiedź @qnimbus jest prawdopodobnie najlepsza dla systemów Linux, ale w Sun lub IBM (jeśli nie masz szczęścia, by użyć jednego w 2019 r.) ta komenda może być niedostępna. Zamiast tego możesz użyć
pr
polecenia, aby uzyskać ten sam efekt. Z przykładów na połączonej stronie możesz użyć następujących opcji:aby wydrukować plik
word.lst
w 3 kolumnach. To powiedziawszy, to tylko część rozwiązania twojego problemu, a resztę odkładam na odpowiedź @qnimbus.źródło