我正在尝试column -t -s $'\t'
在 tcsh 中使用(在 bash 中有效),但我找不到让它工作的方法
echo "selected version\tnew version\nbbb\tccc\n" | column -t -s $'\t'
Illegal variable name
那么 tcsh 中的等价物是什么?
我正在尝试column -t -s $'\t'
在 tcsh 中使用(在 bash 中有效),但我找不到让它工作的方法
echo "selected version\tnew version\nbbb\tccc\n" | column -t -s $'\t'
Illegal variable name
那么 tcsh 中的等价物是什么?
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-VTab-- 但是当您阅读代码时,它与一系列空格无法区分。
这是一种解决方案,使用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
通常,您只需使用“\t”作为选项卡。但是,column 似乎将其从字面上解释为反斜杠和字母 t。要解决此问题,您可以通过按 cntl-v 然后按制表符(用引号括起来)显式输入制表符。
但是请注意,在您的特定示例中,您根本不需要 -s 参数,因为默认情况下,列以空格分隔。