UNIX cut命令选第2字段时无分隔符行返回整行是否为Bug?
coreutils cut工具的行为说明
你的预期确实有误,cut的这个输出是符合它的设计逻辑的。
cut工具的核心规则是:
- 当处理的行不包含指定的分隔符时,无论指定哪个字段,cut都会直接输出整行内容;
- 只有当行内存在分隔符,但指定的字段编号超出实际分割出的字段数量时,才会输出空内容。
结合你的例子来看:
第三行内容是three,里面没有分隔符,,所以执行cut -d ',' -f2时,cut会直接输出整行的three;如果把第三行改成three,(末尾添加逗号),此时行内有分隔符,分割后字段1是three,字段2不存在,这时候cut才会输出空行。
你可以验证这个逻辑:
执行命令:
echo " one,line1 two,line2 three, four,line4 " | cut -d ',' -f2
得到的输出会是:
line1 line2 line4
此时第三行就是你预期的空内容。
内容的提问来源于stack exchange,提问作者trademarkets
相关产品推荐
相关产品推荐

