【发布时间】:2013-12-07 17:32:53
【问题描述】:
我有一个制表符分隔的文本文件,我将它发送到column 以“漂亮地打印”一个表格。
原始文件:
1<TAB>blablablabla<TAB>aaaa bbb ccc
2<TAB>blabla<TAB>xxxxxx
34<TAB>okokokok<TAB>zzz yyy
使用column -s$'\t' -t <original file>,我得到
1 blablablabla aaaa bbb xxx
2 blabla xxxxxx
34 okokokok zzz yyy
根据需要。现在我想为列添加颜色。我尝试在原始文件中的每个制表符分隔字段周围添加转义码。 column 成功打印彩色,但列不再对齐。相反,它只是逐字打印 TAB 分隔符。
问题是:我怎样才能让列对齐,同时还具有独特的颜色?
我想了两种方法来实现这一点:
- 调整
column参数以使对齐与颜色代码一起使用 - 将列的输出重定向到另一个文件,并对前两个以空格分隔的字段进行搜索+替换(前两列保证不包含空格;第三列很可能将包含空格,但不包含 TAB 字符)
问题是,我不知道如何做这两个...
作为参考,这是我传递给column的内容:
请注意,这些字段确实由 TAB 字符分隔。我已经通过od 确认了这一点。
编辑:
着色似乎没有问题。我已经有了上面显示的文件,并且颜色代码可以正常工作。问题是column 在我发送带有转义码的输入后将无法对齐。我正在考虑将没有颜色代码的字段传递给column,然后在每个字段之间复制column输出的确切空格数,并在漂亮的打印方案中使用它。
【问题讨论】:
-
我只使用“column -t my_file”进行了尝试,没有发现对齐问题。
-
如果 FIELD3 中有空格,除非您指定不同的分隔符,否则它将不起作用。即便如此,我的前两列没有对齐,即使它们不包含空格。这是
column -t my_file的结果:i.imgur.com/w6i1aGn.png -
今天必须离开。明天会更深入地研究这个..必须有一个解决方案。 (当然,您可以使用更多 mighty 语言,例如 python 或 perl。但是 awk + column 应该可以工作.. 不知道为什么)
-
我认为它可能只是我的机器——它似乎对其他人有用。我有一个相当旧的系统:
Linux version 2.6.18-238.el5 (mockbuild@x86-012.build.bos.redhat.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-50)) #1 SMP Sun Dec 19 14:22:44 EST 2010
标签: bash unix escaping multiple-columns