GVKun编程网logo

bash – 计算单词列表中每个单词出现在文件中的次数?(统计每个单词出现的次数,并按单词字典序从小到大输出)

6

在这篇文章中,我们将为您详细介绍bash–计算单词列表中每个单词出现在文件中的次数?的内容,并且讨论关于统计每个单词出现的次数,并按单词字典序从小到大输出的相关问题。此外,我们还会涉及一些关于2022

在这篇文章中,我们将为您详细介绍bash – 计算单词列表中每个单词出现在文件中的次数?的内容,并且讨论关于统计每个单词出现的次数,并按单词字典序从小到大输出的相关问题。此外,我们还会涉及一些关于2022-11-10:写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。 为了简单起见,你可以假设: words.txt只包括小写字母和 ‘ ‘ 。 每个单词只由小写、bash – 使用grep计算单词在文件中重复的次数、bash – 匹配单词列表中的单词并计算出现次数、bash – 如何创建文件中每个单词的频率列表?的知识,以帮助您更全面地了解这个主题。

本文目录一览:

bash – 计算单词列表中每个单词出现在文件中的次数?(统计每个单词出现的次数,并按单词字典序从小到大输出)

bash – 计算单词列表中每个单词出现在文件中的次数?(统计每个单词出现的次数,并按单词字典序从小到大输出)

我有一个文件list.txt,其中包含一个单词列表.我想检查每个单词出现在另一个文件file1.txt中的次数,然后输出结果.所有数字的简单输出就足够了,因为我可以用电子表格程序手动将它们添加到list.txt,但是如果脚本在list.txt的每行末尾添加数字,那就更好了,例如:
bear 3
fish 15

我试过这个,但它不起作用:

cat list.txt | grep -c file1.txt
您可以在循环中执行此操作,该循环一次从单词列表文件中读取单个单词,然后计算数据文件中的实例.例如:
while read; do
    echo -n "$REPLY "
    fgrep -ow "$REPLY" data.txt | wc -l
done < <(sort -u word_list.txt)

“秘密酱”包括:

>使用隐式REPLY变量;>使用进程替换从单词列表文件中收集单词;和>确保您在数据文件中搜索整个单词.

2022-11-10:写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。 为了简单起见,你可以假设: words.txt只包括小写字母和 ‘ ‘ 。 每个单词只由小写

2022-11-10:写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。 为了简单起见,你可以假设: words.txt只包括小写字母和 ‘ ‘ 。 每个单词只由小写

2022-11-10:写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。 为了简单起见,你可以假设: words.txt只包括小写字母和 '' '' 。 每个单词只由小写字母组成。 单词间由一个或多个空格字符分隔。 示例: 假设 words.txt 内容如下:

the day is sunny the the the sunny is is

你的脚本应当输出(以词频降序排列):

the 4 is 3 sunny 2 day 1

说明: 不要担心词频相同的单词的排序问题,每个单词出现的频率都是唯一的。 你可以使用一行 Unix pipes 实现吗?

答案2022-11-10: 一条命令即可。力扣192。

cat words.txt | tr -s '' '' ''\n'' | sort | uniq -c | sort -r | awk ''{ print $2, $1 }''

1 切割 2 排序单词 3 统计单词出现次数 4 排序单词出现次数 5 打印

在这里插入图片描述

bash – 使用grep计算单词在文件中重复的次数

bash – 使用grep计算单词在文件中重复的次数

问题是这样的:

例如,我有一个文件“a.xml”.在这个文件中,它只是一行

<queue><item><cause><item>

我想找几次< item>发生,在这种情况下它是2.

但是,如果我跑:

grep -c "<item>" a.xml

它只会给我1,因为grep会在匹配第一个< item>时立即停止.

所以我的问题是如何使用简单的shell / bash命令返回次数< item>发生?

它看起来很简单,但我找不到一个好方法.有任何想法吗?

解决方法

您可以尝试以下方法:

grep -o "<item>" a.xml | wc -l

bash – 匹配单词列表中的单词并计算出现次数

bash – 匹配单词列表中的单词并计算出现次数

所以我有一个普通的文本文件,其中有一些写作,它实际上是随机的,但我也有一个单词列表,我想与它进行比较,并计算出现在单词列表上的文本文件中的每个单词的出现次数.

例如,我的单词列表可以由以下内容组成:

good
bad 
cupid
banana
apple

然后我想将这些单词中的每一个与我的文本文件进行比较,这可能是这样的:

有时我会前往好的地方,而不是坏的地方.例如,我想去天堂,遇到一个吃苹果的丘比特.也许我会看到神话中的生物吃其他水果,如苹果,香蕉和其他好水果.

我希望我的输出能够生成列出的单词每次出现的次数.我有办法做到这一点是awk和for循环但我真的希望避免for循环因为它将需要永远,因为我的真实单词列表大约10000字长.

所以在这种情况下,我的输出应该是(我认为)9,因为它计算该列表上一个单词的总出现次数.

顺便说一句,该段是完全随机的.

解决方法

对于任何更大的文本,我肯定会使用这个:

perl -nE'BEGIN{open my$fh,"<",shift;my@a=map lc,map/(\w+)/g,<$fh>;@h{@a}=(0)x@a;close$fh}exists$h{$_}and$h{$_}++for map lc,/(\w+)/g}{for(keys%h){say"$_: $h{$_}";$s+=$h{$_}}say"Total: $s"' word.list input.txt

bash – 如何创建文件中每个单词的频率列表?

bash – 如何创建文件中每个单词的频率列表?

我有一个这样的文件:
This is a file with many words.
Some of the words appear more than once.
Some of the words only appear one time.

我想生成一个两列列表。第一列显示出什么词,第二列显示出现的频率,例如:

this@1
is@1
a@1
file@1
with@1
many@1
words3
some@2
of@2
the@2
only@1
appear@2
more@1
than@1
one@1
once@1
time@1

>为了使此工作更简单,在处理列表之前,我将删除所有标点符号,并将所有文本更改为小写字母。
>除非有一个简单的解决方案,单词和单词可以算作两个单独的单词。

到目前为止,我有这个:

sed -i "s/ /\n/g" ./file1.txt # put all words on a new line
while read line
do
     count="$(grep -c $line file1.txt)"
     echo $line"@"$count >> file2.txt # add word and frequency to file
done < ./file1.txt
sort -u -d # remove duplicate lines

由于某些原因,这只是在每个单词之后显示“0”。

如何生成文件中显示的每个单词列表以及频率信息?

不是sed和grep,而是tr,sort,uniq和awk:
% (tr ' ' '\n' | sort | uniq -c | awk '{print $2"@"$1}') <<EOF
This is a file with many words.
Some of the words appear more than once.
Some of the words only appear one time.
EOF

a@1
appear@2
file@1
is@1
many@1
more@1
of@2
once.@1
one@1
only@1
Some@2
than@1
the@2
This@1
time.@1
with@1
words@2
words.@1

今天关于bash – 计算单词列表中每个单词出现在文件中的次数?统计每个单词出现的次数,并按单词字典序从小到大输出的介绍到此结束,谢谢您的阅读,有关2022-11-10:写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。 为了简单起见,你可以假设: words.txt只包括小写字母和 ‘ ‘ 。 每个单词只由小写、bash – 使用grep计算单词在文件中重复的次数、bash – 匹配单词列表中的单词并计算出现次数、bash – 如何创建文件中每个单词的频率列表?等更多相关知识的信息可以在本站进行查询。

本文标签: