使用 unix cut *-c* 插入输出定界符

Insert output-delimiter with unix cut *-c*

cut 的文档(参见 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?我是否误解了文档?

在关闭之前,请注意:

在版本 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,您的版本可能已经向后移植了安全修复程序,但没有像这样的剪纸错误。

解决方案是升级,或使用您所指出的替代工具。