我正在尝试在tcsh中使用column -t -s $'\t'
(在bash中有效)但我找不到让它工作的方法
echo "selected version\tnew version\nbbb\tccc\n" | column -t -s $'\t'
Illegal variable name
那么tcsh中的等价物是什么?
答案 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参数,因为默认情况下列按空格分隔。