使用cut命令处理不可打印的分隔符

21

在使用cut命令时,能否使用不可打印字符作为定界符呢?例如,我想使用"^A"字符(也可以表示为\001)作为定界符。

4个回答

30
如果您正在使用Bash,请使用以下命令:
cut -d $'\001' ...

可行(参见Bash参考手册#3.1.2.4 ANSI-C引用)。

其他(更加便携的)选项,

cut -d `echo -e '\001'` ...

FS=`echo -e '\001'`
cut -d $FS ...

或者像Alnitak和etlerant提到的那样直接使用^V插入控制字符——在shell命令行和诸如vi之类的编辑器中,这意味着“不要特殊对待我接下来输入的东西”。


6

是的,这完全有可能。

如果在Shell中输入,请按^V,然后按^A^A插入当前行,而不是将其视为正常的“转到行首”命令:

% cat -v foo
abc^Adef^Aghi
% cut -d^A -f2 foo
def

1
如果你的不可打印分隔符是tab,相当于\t,并且你想找到每行以tab分隔的倒数第二个项目,你可以使用以下代码:
cut -d $'\t' -f2- tablimited.csv

0

CTRL-V CTRL-A ?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接