终端窗口上的TCL打印选项卡字符

时间:2016-11-07 09:38:42

标签: tcl

当尝试从tcl打印制表符(ASCII十六进制0x09)时,它会转换为空格(ASCII十六进制0x20)。如何避免此行为并在终端窗口中获​​取制表符?

% puts "aa\t\tbb"
aa              bb

aabb之间的空格错误地填充了0x20个字符而不是两个0x09字符。

% puts "aa\u0009\u0009bb\n"
aa              bb

结果相同。虽然字符串似乎包含0x09:

% set a "aa\t\tbb"
aa              bb
% string length $a
6

所以这只是puts行为。

背景: 我希望标签字符存在,这样我就可以将终端中的数字列表复制粘贴到电子表格中,其中的数字最终会出现在不同的电子表格单元格中。

1 个答案:

答案 0 :(得分:0)

Tcl本身将编写真正的标签 - puts命令不会将标签转换为我所知道的任何模式中的任何其他标签 - 但终端需要确定什么和他们一起做。您的终端似乎正在用空格替换标签; 在角色离开Tcl的控制权之后发生了,所以它不会做太多。

您可以通过将代码输出重定向到文件并使用文本编辑器或od -c之类的工具直接查看该文件来验证我说的是真的(如果您有一套POSIX工具)。选项卡将在那里。 Tcl在写入文件和写入终端之间不会显着改变行为;如果确实如此,这将是一个可怕的错误。

(技术上可能在stdout频道上有一个输出过滤器正在进行转换,但这不太可能!更重要的是,它&#39如果你不知道它,它就更不可能在那里。)