所以我试图在txt文件的每一行中打印第一个单词。单词用一个空格分隔。
cut -c 1 txt file
这是我到目前为止的代码,但它只打印每行的第一个字符。 谢谢
答案 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
位置:
\
作为空格)请注意,space
之后是\
。