如何统计指定行数的字数?

如何统计指定行数的字数?

我遇到一个有趣的问题来计算文件中的单词,其中行数也被指定为命令行参数。例如,如果输入文本文件有 -

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 循环,但无法指定如何仅获取这些行数。

答案1

获得head -n 3 unix.txt文件的前三行,然后可以将它们通过管道传输到wc

因此,对于存储在 shell 变量中的任意文件名$file

{ head -n 3 | wc -w; } < "$file"

或者:

head -n 3 -- "$file" | wc -w

尽管后者不适用于-通过某些head实现调用的文件,并且当文件无法打开时0除了错误消息(通过)之外还输出,并且在这种情况下失败退出状态将丢失,除非您使用在某些 shell 中找到的head(非标准)选项。pipefail

答案2

也试试

awk -v"LNR=$2" 'NR > LNR {print SUM; exit} {SUM+=NF}' file
13

答案3

我们可以这样做awk

awk '{print NF}' unix.txt

字数和行数

awk '{print NF" "$0}' unix.txt

带行号的字数统计

awk '$0="line"NR": "NF'  unix.txt
awk '$0="line"NR": "NF'  unix.txt | grep line3

答案4

你的脚本有两个参数,

因此,在脚本中,您可以像下面这样使用它:

sed -n "/\w/{1,$2 p;}"  $1 | wc -w

其中$1包含您的文件名 $2包含您需要搜索的总行数

相关内容