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)
bagaimana saya bisa dengan elegan mencetak informasi 5 file ini ke dalam kolom dengan header?
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)"
dan seterusnya 5 file
total files: $TOTALFILE
apakah ada cara mudah untuk mendapatkan apa yang saya inginkan?
Catatan: output ini saya dapatkan ketika gema setiap variabel
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)"
Jawaban:
Anda dapat menggunakan perintah shell 'kolom' untuk itu, periksa:
column
halaman MAN .Gabungkan ini dengan satu lingkaran dan Anda berada dalam bisnis, misalnya:
sumber
sed 's/^/ \* \*/g'
untuk memindahkan sesuatu dari kolom pertama ke kolom ketiga. Berhasil memperlakukan saya.Saya akan merekomendasikan menggunakan
printf
, misalnya:Di mana
%-30s
berarti cadangan 30 karakter untuk argumen input tipe string. Yang-
menunjukkan keselarasan kiri.sumber
Saya akan pergi dengan lingkaran
sumber
Tidak yakin apakah ini yang Anda inginkan, "tempel" di unix dapat mengatur file dalam kolom, Anda mungkin perlu printf untuk memformat ulang sttdout. contoh:
sumber
@ qnimbus mungkin jawaban yang terbaik untuk sistem Linux tetapi pada Sun atau IBM (jika Anda tidak cukup beruntung untuk menggunakannya pada 2019) perintah ini mungkin tidak tersedia. Sebaliknya Anda bisa menggunakan
pr
perintah untuk mendapatkan efek yang sama. Dari contoh di halaman tertaut Anda dapat menggunakan yang berikut:untuk mencetak file
word.lst
dalam 3 kolom. Yang mengatakan, ini hanya bagian dari solusi untuk masalah Anda dan untuk sisanya saya tunduk pada jawaban @ qnimbus.sumber