什么是tcsh相当于bash $'\ t'

时间:2013-03-05 09:23:42

标签: tcsh

我正在尝试在tcsh中使用column -t -s $'\t'(在bash中有效)但我找不到让它工作的方法

echo "selected version\tnew version\nbbb\tccc\n" | column -t -s $'\t'
Illegal variable name

那么tcsh中的等价物是什么?

2 个答案:

答案 0 :(得分:1)

tcsh没有在字符串文字中包含非打印字符的机制,除了直接包含它们。

在bash中,您可以执行此操作(将echo更改为printf,因为其行为更加一致):

$ printf "selected version\tnew version\nbbb\tccc\n" | column -t -s $'\t'
selected version  new version
bbb               ccc

在tcsh中,您可以将$'\t'替换为文字制表符,通过键入 Ctrl-V Tab 输入 - 但是当您阅读代码时它与一系列空间无法区分。

这是一个解决方案,使用printf命令将\t转换为制表符:

% printf "selected version\tnew version\nbbb\tccc\n" | column -t -s "`printf '\t'`"
selected version  new version
bbb               ccc

您还可以将制表符存储在变量中;您可以使用双引号或:t后缀在使用时保留文字值:

% set tab = "`printf '\t'`"
% printf "selected version\tnew version\nbbb\tccc\n" | column -t -s "$tab"
selected version  new version
bbb               ccc
% printf "selected version\tnew version\nbbb\tccc\n" | column -t -s $tab:q
selected version  new version
bbb               ccc

答案 1 :(得分:0)

一般来说,你只需要“\ t”选项卡。然而,专栏似乎在字面上解释为反斜杠和字母t。要解决此问题,您可以通过按cntl-v然后选项卡(用引号括起来)显式输入制表符。

但请注意,对于您的特定示例,您根本不需要-s参数,因为默认情况下列按空格分隔。