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の8進数はスペースを取らないと想定しているようです。最初のエスケープシーケンスを独自の行に配置し、その改行を出力から削除することで、必要なものを取得できます。
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
を使用してカラーコードafterを追加することもできます。
$ 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