意外削减产量

意外削减产量

我从 cut 中得到了意想不到的输出。我期望没有输出,因为没有基于指定分隔符的第三个字段。前两行有意使用逗号作为分隔符,第三行同时使用逗号和分号。我知道 cut 通常是如何工作的,但我试图表明在这个例子中这不应该产生输出,但它确实产生了输出。

输入文件:students.txt

Fred,Jones,sophomore
Mary,Adams,freshman
Sam,Fredrick;senior

剪切命令:

cut -f3 -d ';' students.txt

意外的输出:

Fred,Jones,sophomore
Mary,Adams,freshman

答案1

打印不包含分隔符的行的原因可以在手册页中找到。

-f, --fields=LIST
       select only these fields; also print any line that contains no delimiter character,
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       unless the -s option is specified

正如 @eyoung100 提到的,-s不会打印它们

-s, --only-delimited
      do not print lines not containing delimiters

答案2

尝试:

cut -f 3 -d ';' -s students.txt

从剪切的手册页中:

-s, --仅分隔

不打印不包含分隔符的行

我相信在这种情况下s会代表suppress

提示:这是有效的,因为即使逗号是分隔符,它也不是由选项指定的-d

相关内容