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)
Как я могу элегантно распечатать эту информацию 5 файлов в столбцы с заголовками?
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)"
и так на 5 файлов
total files: $TOTALFILE
Есть ли простой способ получить то, что я хочу?
примечание: этот вывод я получил, когда эхо каждой переменной
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)"
Ответы:
Для этого вы можете использовать команду оболочки 'column', проверьте
column
страницу MAN .Объедините это с циклом, и вы в бизнесе, например:
источник
sed 's/^/ \* \*/g'
перемещения столбцов из первого столбца в третий. Получил удовольствие для меня.Я бы порекомендовал использовать
printf
, например:Где
%-30s
означает зарезервировать 30 символов для входного аргумента типа string. В-
обозначает выравнивание по левому краю.источник
Я бы пошел с петлей
источник
Если вы не уверены, что это то, что вам нужно, «вставка» в unix может упорядочить файлы в столбце, вам может понадобиться printf для переформатирования sttdout. пример:
источник
Ответ @qnimbus, вероятно, лучше всего подходит для систем Linux, но в Sun или IBM (если вам не повезло использовать его в 2019 году) эта команда может быть недоступна. Вместо этого вы можете использовать
pr
команду, чтобы получить тот же эффект. Из примеров на связанной странице вы можете использовать следующее:распечатать файл
word.lst
в 3 столбца. Тем не менее, это только часть решения вашей проблемы, а в остальном я откладываю ответ @qnimbus.источник