空字符串作为Cut的输出字段分隔符

时间:2015-07-15 09:19:36

标签: linux cut

如何使用--output-delimiter=""剪切?我想使用cut加入两列。

我尝试了以下命令。但是cat -v表示存在不可打印的字符。特别是“^@”。我有什么建议可以克服这个问题吗?

cut -d, -f 3,6 --output-delimiter=""  file1.csv | cat -v

这是我的文件的内容

011,IBM,彭明盛,T,T,T
012,INTC,欧德宁,T,T,T
013,SAP,Snabe,T,T,T
014,VMW,马瑞兹,T,T,T
015,ORCL,埃里森,T,T,T
017,RHT,Whitehurst的,T,T,T



当我执行命令时,我看到了 彭明盛^ @ T
欧德宁^ @ T
Snabe ^ @ T
马里茨^ @ T
埃里森^ @ T
Whitehurst的^ @吨

预期输出:基本上我想在输出中排除^ @

Palmisanot
Otellinit
Snabet
Maritzt
Ellisont
Whitehurstt

谢谢。

2 个答案:

答案 0 :(得分:1)

输出分隔符不是空字符串,但可能是NULL字符。您可能想尝试

cut -d, -f 3,6 --output-delimiter=$'\00' file1.csv

(假设你的shell支持$'...' - 引用; bashzsh在这里很好,不确定其他人)。

编辑:

如果输出分隔符设置为空字符串,

cut显然会放置NULL字符。我没有看到解决方法。

如果awk是可接受的解决方案,那么这将解决问题:

awk -F, '{print $3 $6}' file*

如果你想更加冗长和明确:

awk 'BEGIN{FS=","; OFS=""}; {print $3,$6}' file*

FS=","将字段分隔符设置为,OFS=""将输出字段分隔符设置为空字符串。

答案 1 :(得分:0)

您可能不想通过字段来切换,而是通过字符或者字节。请参阅手册页中的-c和/或-b说明,而不是-f