Colors
列命令和顏色轉義碼問題
我正在為格式化為的表格的標題著色
column -ts $'\t'
沒有顏色程式碼也能很好地工作,但是當我將顏色程式碼添加到第一行時
column
,不能正確對齊輸出。沒有彩色輸出,它按預期工作:
printf "1\t2\t3\nasdasdasdasdasdasdasd\tqwe\tqweqwe\n" | column -ts $'\t'
但是在第一行列上添加顏色時不會對齊彩色行的文本:
printf "\e[7m1\t2\t3\e[0m\nasdasdasdasdasdasdasd\tqwe\tqweqwe\n" | column -ts $'\t'
在 Ubuntu Linux 和 Mac OS X 上都觀察到了這種行為。
我想這
column
不知道這\e[7m
是一個 v100 轉義序列,它在輸出中不佔用空間。似乎假設字元程式碼 0 到 037 八進制不佔用空格。您可以通過將初始轉義序列放在自己的一行上,然後從輸出中刪除該換行符來獲得所需的內容:printf '\e[7m\n1\t2\t3\e[0m\nasdasdasdasdasdasdasd\tqwe\tqweqwe\n' | column -ts $'\t' | sed '1{N;s/\n//}'
是的,那是因為顏色程式碼也被
column
. 他們和其他人一樣都是角色。既然你已經在使用printf
,你也可以用它來為你做格式化:$ printf '\e[7m%-24s%-8s%-6s\e[0m\n%-24s%-8s%-6s\n' "1" "2" "3" "asdasdasdasdasdasdasd" "qwe" "qweqwe" 1 2 3 asdasdasdasdasdasdasd qwe qweqwe
或者,您可以在使用後添加顏色程式碼
column
:$ printf "1\t2\t3\nasdasdasdasdasdasdasd\tqwe\tqweqwe\n" | column -ts $'\t' | sed "1{s/^/$(printf '\e[7m')/;s/$/$(printf '\e[0m')/}" 1 2 3 # this line is colored asdasdasdasdasdasdasd qwe qweqwe