我正在嘗試將行轉換為表格格式的列。
Server Name : dev1-151vd
Status : DONE
Begin time : 2021-12-20 04:30:05.458719-05:00
End time : 2021-12-20 04:33:15.549731-05:00
Server Name : dev2-152vd
Status : DONE
Begin time : 2021-12-20 04:30:05.405746-05:00
End time : 2021-12-20 04:30:45.212935-05:00
我使用以下 awk 腳本將行轉換為列
awk -F":" -v n=4 \
'BEGIN { x=1; c=0;}
c <= n && x == 1 {print $1; buf = buf $2 "\n";
if(c == n) {x = 2; printf buf} next;}
!/./{c=0;next}
c <=n {printf "%4s\n", $2}' temp1.txt | \
paste - - - - | \
column -t -s "$(printf "\t")"
Server Name Status Begin time End time
dev1-151vd DONE 2021-12-20 04 2021-12-20 04
dev2-152vd DONE 2021-12-20 04 2021-12-20 04
上面的 o/p 沒有正確的開始時間和結束時間,請讓我知道如何正確設定格式以便正確列印時間。
uj5u.com熱心網友回復:
看這個腳本:
awk -F": " -v n=4 \
'BEGIN { x=1; c=0;}
c <= n && x == 1 {print $1; buf = buf $2 "\n";
if(c == n) {x = 2; printf buf} next;}
!/./{c=0;next}
c <=n {printf "%4s\n", $2}' 20211222.txt | \
paste - - - - | \
column -t -s "$(printf "\t")"
輸出:
Server Name Status Begin time End time
dev1-151vd DONE 2021-12-20 04:30:05.458719-05:00 2021-12-20 04:33:15.549731-05:00
dev2-152vd DONE 2021-12-20 04:30:05.405746-05:00 2021-12-20 04:30:45.212935-05:00
說明:在 awk 中,該-F選項表示欄位分隔符。在您的代碼中,您使用冒號將列彼此分開。但是,在您的輸入中,某些行有 1 個以上的冒號(即,僅您的時間戳欄位就有 3 個冒號),因此 awk 將這些行解釋為有 5 列。
解決方案是在您的欄位分隔符 ( ": ") 中添加一個空格,因為您的輸入在第一個冒號之后和第二列之前確實有一個空格。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/391141.html
標籤:linux PostgreSQL的 猛击 壳 Unix
下一篇:物體回應DTO中的統計資訊可分頁
