我想要打印文本文件每一行的第一个单词。每个单词由一个空格分隔。
cut -c 1 txt file
这是我目前为止写的代码,但它只打印每行的第一个字符。 谢谢
-f 1
而不是-c 1
。由于默认字段分隔符为制表符而不是空格,因此需要使用-d
选项。cut -d' ' -f1 filename
使用cut
命令无法打印出最后两个单词,据我所知这是不可能的,因为它只能从行开头计数。改用awk
命令:
使用cut
命令无法打印出最后两个单词,据我所知这是不可能的,因为它只能从行开头计数。改用awk
命令:
awk '{print $(NF-1), $NF;}' filename
cut
命令,你可以使用 rev file | cut -d' ' -f1-2 | rev
或者使用 awk '{print $(NF-1),$NF}' file
。 - Chris Seymour你可以尝试
awk '{print $1}' your_file
read word _ < file
echo "$word"
这种解决方案的好处在于它不会超出第一行读取文件。即使是awk,它有一些非常简洁的语法,也必须明确地告诉它停止阅读第一行之后的内容。read
每次只读取一行。而且它是bash内置命令(以及许多shell的内置命令),因此您无需运行新进程。
如果您想打印每行的第一个单词:
while read word _; do printf '%s\n' "$word"; done < file
但如果文件很大,那么使用awk或cut读取每一行会更快。
您可以使用:
cut -d\ -f1 file
说明:
\
表示空格)注意,在 \
后面有一个空格。
-d ' '
以使空格更加明显。 - Chris Page-c
代表字符,您需要使用 -f
来表示字段,-d
则用于指定空格作为分隔符而不是默认的制表符:
cut -d " " -f 1 file