我从 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
。