在文本文件unix bash的每一行打印第一个单词

时间:2013-10-02 19:40:27

标签: bash file unix

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

cut -c 1 txt file 

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

5 个答案:

答案 0 :(得分:28)

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

cut -d' ' -f1 filename

要使用cut,AFAIK打印不可能的最后两个单词,因为它只能从行的开头计算。请改用awk

awk '{print $(NF-1), $NF;}' filename

答案 1 :(得分:20)

你可以尝试

awk '{print $1}' your_file

答案 2 :(得分:10)

read word _ < file
echo "$word"

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

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

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

但是如果文件很大,那么awk或cut会赢得读取每一行。

答案 3 :(得分:1)

-c适用于字符,您需要-f表示字段,-d表示您的空格分隔符而不是默认标签:

cut -d " " -f 1 file

答案 4 :(得分:1)

您可以使用:

cut -d\  -f1 file

位置:

  • -d是定界符(此处使用\作为空格)
  • -f是字段选择器

请注意,space之后是\