Jim*_*ean 5 shell colors text-processing tabulation columns
我的输入包含我想要制表的 ANSI 颜色代码。我希望输出保持彩色,因此表格输出应保持 ANSI 颜色代码。因此,天真地剥离它们不符合我的要求。
例如,对于这个输入,
\033[0;32;1mgreen_apple\033[0m 1 100
orange 20 19
pineapple 1000 87
avocado 4 30
Run Code Online (Sandbox Code Playgroud)
我期望的输出类似于
green_apple 1 100
orange 20 19
pineapple 1000 87
avocado 4 30
Run Code Online (Sandbox Code Playgroud)
在上面的输出中,“green_apple”应该根据输入的颜色代码(即绿色)着色。我想知道如何做到这一点。
我试过 column,但它不处理 ANSI 代码。的输出
echo '\033[0;32;1mgreen_apple\033[0m 1 100
orange 20 19
pineapple 1000 87
avocado 4 30' | column -t
Run Code Online (Sandbox Code Playgroud)
不幸的是
green_apple 1 100
orange 20 19
pineapple 1000 87
avocado 4 30
Run Code Online (Sandbox Code Playgroud)
注意非制表。
我认为没有这样的命令,你必须手动执行。就像是:
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]]
}
}'
Run Code Online (Sandbox Code Playgroud)