使用 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
?我是否误解了文档?
在关闭之前,请注意:
- 我知道我可以使用
awk
或 sed
或 perl
或 bash
或 (..)(参见 this similar question with an ugly accepted answer)但我我正在寻找 cut
解决方案,特别是因为文档说它应该有效。
- 我正在使用
-c
而不是 -f
在版本 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,您的版本可能已经向后移植了安全修复程序,但没有像这样的剪纸错误。
解决方案是升级,或使用您所指出的替代工具。
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
?我是否误解了文档?
在关闭之前,请注意:
- 我知道我可以使用
awk
或sed
或perl
或bash
或 (..)(参见 this similar question with an ugly accepted answer)但我我正在寻找cut
解决方案,特别是因为文档说它应该有效。 - 我正在使用
-c
而不是-f
在版本 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,您的版本可能已经向后移植了安全修复程序,但没有像这样的剪纸错误。
解决方案是升级,或使用您所指出的替代工具。