私の入力には、テーブルとして書きたいANSIカラーコードが含まれています。出力の色を維持したいので、表形式の出力はANSIカラーコードを維持する必要があります。だから、無邪気にそれらを剥がすことは私には合いません。
たとえば、この入力の場合
\033[0;32;1mgreen_apple\033[0m 1 100
orange 20 19
pineapple 1000 87
avocado 4 30
私が期待する結果は次のようになります。
green_apple 1 100
orange 20 19
pineapple 1000 87
avocado 4 30
上記の出力では、「green_apple」は、入力カラーコード(緑など)に従って色を付ける必要があります。私はこれを達成する方法を知りたいです。
その列を試しましたが、ANSIコードを処理しません。出力
echo '\033[0;32;1mgreen_apple\033[0m 1 100
orange 20 19
pineapple 1000 87
avocado 4 30' | column -t
残念ながら
green_apple 1 100
orange 20 19
pineapple 1000 87
avocado 4 30
表形式ではないことに注意してください。
ベストアンサー1
そのような命令はなく、手動で行う必要があると思います。それは次のとおりです。
awk '
{
nf[NR]=NF
for (i = 1; i <= NF; i++) {
f[NR,i] = $i
gsub(/\033\[[0-9;]*[mK]/, "", $i)
len[NR,i] = l = length($i)
if (l > max[i]) max[i] = l
}
}
END {
for (n = 1; n <= NR; n++) {
for (i = 1; i < nf[n]; i++)
printf "%s%*s", f[n,i], max[i]+1-len[n,i], ""
print f[n,nf[n]]
}
}'