30

所以我试图打印 txt 文件的每一行中的第一个单词。单词之间用一个空格隔开。

cut -c 1 txt file 

这就是我到目前为止的代码,但它只打印每行的第一个字符。谢谢

4

5 回答 5

38

要打印整个单词,您需要-f 1,而不是-c 1. 并且由于默认字段分隔符是 TAB 而不是 SPACE,因此您需要使用该-d选项。

cut -d' ' -f1 filename

要打印 AFAIK 无法打印的最后两个单词cut,因为它只能从行首开始计数。改用awk

awk '{print $(NF-1), $NF;}' filename
于 2013-10-02T19:45:12.633 回答
33

你可以试试

awk '{print $1}' your_file
于 2013-10-02T19:41:36.573 回答
10
read word _ < file
echo "$word"

这个解决方案的好处是它不会超出文件的第一行。即使是 awk,它有一些非常干净、简洁的语法,也必须被明确告知停止阅读超过第一行的内容。read一次只读一行。另外,它是一个 bash 内置程序(以及许多 shell 中的内置程序),因此您不需要运行新进程。

如果要打印每行的第一个单词:

while read word _; do printf '%s\n' "$word"; done < file

但是如果文件很大,那么 awk 或 cut 将在读取每一行时胜出。

于 2013-10-02T19:46:11.560 回答
4

您可以使用:

cut -d\  -f1 file

在哪里:

  • -d 是分隔符(这里\用于空格)
  • -f 是字段选择器

注意space后面有一个\

于 2018-07-25T15:27:44.060 回答
2

-c用于字符,您希望-f用于字段,并-d指示您的空格分隔符而不是默认选项卡:

cut -d " " -f 1 file
于 2013-10-02T19:45:08.590 回答