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



如何与--output-delimiter=""一起使用cut ?我想用cut来连接两列。

我尝试了以下命令。然而,cat -v显示有不可打印的字符。特别是"^@"。我该如何克服这个问题,有什么建议吗?

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

这是我的文件

011年,IBM,帕尔米萨诺,t, t, t
012年,intel,欧德宁,t, t, t
013年,SAP施杰翰,t, t, t
014年,VMW Maritz如是说,t, t, t
015年,李艾科,埃里森,t, t, t
017年,RHT Whitehurst t, t, t



当我运行命令时,我看到
帕米萨诺^ @t
欧德宁^ @t
施杰翰^ @t
Maritz如是说^ @t
埃里森^ @t
Whitehurst ^ @t

期望输出:基本上我想在输出

中排除^@

Palmisanot
Otellinit
Snabet
Maritzt
Ellisont
Whitehurstt

谢谢。

输出分隔符不是空字符串,而可能是NULL字符。你可以试试

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

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

编辑:

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

cut显然会放置NULL字符。我看不出有什么办法。

如果awk是一个可接受的解决方案,这将达到目的:

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

如果你想更详细和明确:

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

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

您可能不想按字段进行切割,而是按字符字节进行切割。请参阅手册页中-c和/或-b的描述,而不是使用-f

最新更新