我遇到了一个有趣的问题来计算文件中的单词,其中行数也被指定为命令行参数。例如,如果输入文本文件有 -
Unix is an OS
Linux is the child of Unix
Unix is fun.
End of File
Run Code Online (Sandbox Code Playgroud)
要执行的命令是:
bash test.sh unix.txt 3
Run Code Online (Sandbox Code Playgroud)
其中unix.txt
是包含句子的测试文件,3 是要计算单词的行数。答案是 13。
我已经使用了基本wc
命令,但没有一个会给出正确的答案。
所以,我尝试使用 for 循环,但我无法指定如何只使用这些行数。
小智 10
随着head -n 3 unix.txt
你的前三行的文件,然后你可以管他们wc
因此,对于存储在$file
shell 变量中的任意文件名:
{ head -n 3 | wc -w; } < "$file"
Run Code Online (Sandbox Code Playgroud)
或者:
head -n 3 -- "$file" | wc -w
Run Code Online (Sandbox Code Playgroud)
尽管后者不适用于-
使用某些head
实现调用的文件,并且当文件无法打开时0
除了错误消息(by head
)之外还输出,并且在这种情况下失败退出状态将丢失,除非您使用(非标准)pipefail
选项在某些 shell 中找到。