cut
的文档(cf info cut
)说:
--output-delimiter=OUTPUT_DELIM_STRING
With `-f`, output fields are separated by OUTPUT_DELIM_STRING. The default with `-f` is to use the input delimiter. When using `-b` or `-c` to select ranges of byte or character offsets (as opposed to ranges of fields), output OUTPUT_DELIM_STRING between non-overlapping ranges of selected bytes.
我的理解是因此:
echo abcdefghi | cut --output-delimiter=',' -c 1-2,5-6
应该给ab,ef
。但它会打印abef
...
我如何实现ab,ef
?我误解了文档吗?
在作为dupe关闭之前,请注意:
awk
或sed
或perl
或bash
或(..)(请参阅this similar question with an ugly accepted answer),但我追求的是一个cut
解决方案,特别是因为文档说它应该可以工作。-c
而不是-f
答案 0 :(得分:1)
在版本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.
鉴于您正在使用2006年左右正式发布的5.9系列,我想我们可以得出结论,这是该系列中的一个错误。鉴于您使用RedHat,您的版本可能已经安装了后端安全修复程序,但没有像这样的剪纸错误。
解决方案是升级,或使用您指出的替代工具。