如何统计一行中的平均字数?

如何统计一行中的平均字数?

我有一个文本文件,每行存储一个句子,我想知道一个句子(该文件中的一行)平均有多少个单词。我怎样才能做到这一点?

另外,如何计算该文件中唯一单词的数量,以及两个这样的文件中常见唯一单词的数量?

提前致谢

答案1

wc file将显示给定的行数、字数和字节数file;字数与行数的比率将为您提供每行的平均字数。

要计算唯一单词的数量,请将文件分成每行一个单词(此处是由一个或多个空格分隔的任何内容),对其进行排序并计算唯一单词的数量:

tr -s ' ' '\n' < file | sort -u | wc -l

如果需要删除标点符号,则需要在排序之前过滤结果(例如用于tr删除不需要的字符)。

要计算两个文件唯一的单词数,您可以使用comm

comm -3 <(tr -s ' ' '\n' < file1 | sort -u) <(tr -s ' ' '\n' < file2 | sort -u)

file1将列出仅出现在或file2但不会同时出现的单词。

comm -12 <(tr -s ' ' '\n' < file1 | sort -u) <(tr -s ' ' '\n' < file2 | sort -u)

将列出两个文件中出现的单词,通过管道wc -l将其计数。

要计算多个文件中的唯一单词数,请先将它们连接起来,然后再将它们提供给tr

cat file1 file2 | tr -s ' ' '\n' | sort -u | wc -l

答案2

这样可以打印每行的平均字数:

wc input.txt | awk '{print $2 / $1}'

你的问题不明确,需要完善。不知道能不能真正解决你的问题。

答案3

使用以下方法计算单词数(以前称为 Perl_6)

raku -e 'my @a.=push($_.words.elems) for lines; say @a; put @a.sum; put @a.elems; put @a.sum / @a.elems;' 

输入示例:

the
the of
the of and
the of and in
the of and in a
the of and in a is
the of and in a is that
the of and in a is that for
the of and in a is that for it
the of and in a is that for it as

示例输出:

[1 2 3 4 5 6 7 8 9 10]
55
10
5.5

上面是用 Raku(Perl 编程语言家族的成员)编写的答案。简而言之,lines循环使用for并加载到 Perl/Raku$_主题变量中。@a声明一个数组,并使用运算符 [ 的快捷方式]$_将输入一次性添加到该数组上。推入数组的实际值是字数,因为每一行都被分解为 并用 进行计数。最后,使用、和-divided_by-生成输出以获得平均值。push.=@a = @a.push($_.words.elems)@a.words.elemssumelemssumelems

要始终输出对象的完整机器表示,请使用put。使用say将提供 Raku 对象的更易于理解的摘要(在 99 个元素后截断)。

[ 为了计算唯一单词,有几种方法。请参阅unique下面的链接。 ]

https://docs.raku.org/routine/unique
https://raku.org

相关内容