cut (cf info cut)的文档说:
--output-delimiter=OUTPUT_DELIM_STRING对于-f,输出字段由OUTPUT_DELIM_STRING分隔。默认的-f是使用输入分隔符。当使用-b或-c选择字节或字符偏移量的范围(相对于字段范围)时,输出所选字节的不重叠范围之间的OUTPUT_DELIM_STRING。
因此,我的理解是:
echo abcdefghi | cut --output-delimiter=',' -c 1-2,5-6应该给ab,ef。但它打印了abef..。
如何实现ab,ef?我有误解文件吗?
在结束之前,请注意:
awk或sed或perl或bash或(..)(请参阅this similar question with an ugly accepted answer)但我需要一个cut解决方案,特别是因为文档中说它应该能工作。-c而不是-f发布于 2017-12-15 19:07:06
在8.22版本中,行为如预期的那样:
$ echo abcdefghi | cut --output-delimiter=',' -c 1-2,5-6
ab,ef
$ cut --version
cut (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.考虑到您使用的5.9系列,正式发布于2006年,我想我们可以得出结论,这是一个错误的系列。考虑到您在RedHat上,您的版本可能已经恢复了安全性修复,但没有像这个版本那样的剪纸错误。
解决方案是升级,或者使用您已经指出的替代工具。
https://stackoverflow.com/questions/47835666
复制相似问题