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

Empty string as a output field seperator for Cut

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

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

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

这是我文件的内容

011,IBM,Palmisano,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,怀特赫斯特,t,t,t



当我 运行 我的命令时,我看到
帕米萨诺^@t
欧德宁^@t
斯内普^@t
马里茨^@t
埃里森^@t
怀特赫斯特^@t

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

棕榈树
欧德尼
斯纳贝特
马里茨
埃里森
怀特赫斯特

谢谢。

您可能不想按 字段 进行剪切,而是按 个字符 或者 字节 [=18] =].请参阅手册页中 -c and/or -b 的说明,而不是使用 -f.

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

cut -d, -f 3,6 --output-delimiter=$'[=10=]' file1.csv

(假设你的 shell 支持 $'...'-quoting;bashzsh 在这里没问题,其他的不确定)。

编辑:

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

cut 显然会放置 NULL 字符。我没有办法解决它。

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

awk -F, '{print  }' file*

如果你想更详细和明确:

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

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