剪切命令不会通过默认分隔符正确提取字段

时间:2013-10-02 05:36:55

标签: linux bash unix

我有一个文本文件,我必须在其中剪切字段3,4,5和8:

219 432 4567 Harrison     Joel     M 4540 Accountant      09-12-1985
219 433 4587 Mitchell     Barbara  C 4541 Admin Asst      12-14-1995
219 433 3589 Olson        Timothy  H 4544 Supervisor      06-30-1983
219 433 4591 Moore        Sarah    H 4500 Dept Manager    08-01-1978
219 431 4527 Polk         John     S 4520 Accountant      09-22-1998
219 432 4567 Harrison     Joel     M 4540 Accountant      09-12-1985
219 432 1557 Harrison     James    M 4544 Supervisor      01-07-2000

由于分隔符默认为tab,因此提取字段的命令为:

cut -f 3,4,5,8 filename

问题是输出与原始文件内容相同。这里发生了什么?为什么这不起作用?

1 个答案:

答案 0 :(得分:3)

您的文件实际上不包含任何制表符。

默认情况下,cut会打印任何不包含分隔符的行,除非您指定-s选项。

由于您的记录在字符边界上而不是以制表符分隔,因此您应使用-c选项指定要剪切的列。例如:

cut -c 9-12,14-25,43-57 file