我遇到了一个有趣的问题,要计算文件中的单词数,该文件中的行数也被指定为命令行参数。例如,如果输入文本文件具有-
Unix is an OS
Linux is the child of Unix
Unix is fun.
End of File
要执行的命令是:
bash test.sh unix.txt 3
其中unix.txt
是包含句子和3中的测试文件,其词语是要计数的行数。答案是13。
我已经使用了基本wc
命令,但是没有一个能给出正确的答案。
因此,我尝试使用for循环,但是我无法指定如何仅采用那些行数。
有了head -n 3 unix.txt
文件的前三行,就可以将它们通过管道传输到wc
因此,对于存储在$file
shell变量中的任意文件名:
{ head -n 3 | wc -w; } < "$file"
或者:
head -n 3 -- "$file" | wc -w
尽管后者无法与在-
某些head
实现中调用的文件一起使用,并且0
在head
无法打开文件时还会输出错误消息(by )并输出,并且在这种情况下,失败退出状态将丢失,除非您使用pipefail
一些外壳中找到了(非标准)选项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句