You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化命令以获取文本文件中目标词对的最大出现次数

解决方法:直接统计词对总次数并比较

你可以用两种简单的方式实现需求,一种是用awk一次性扫描文件统计(适合大文件,效率更高),另一种是用grep+wc组合配合bash条件判断(更直观易懂)。

方法1:使用awk脚本(推荐大文件)

直接用awk遍历文件中的每个单词,分别统计目标词的出现次数,再计算词对总和并比较:

awk '{
    # 遍历当前行的每个单词
    for (i=1; i<=NF; i++) {
        # 精确匹配目标词,忽略大小写(去掉末尾的i可改为严格区分大小写)
        if ($i ~ /^hi$/i) hi_count++
        else if ($i ~ /^hello$/i) hello_count++
        else if ($i ~ /^Good$/i) good_count++
        else if ($i ~ /^Bye$/i) bye_count++
    }
}
END {
    # 计算两个词对的总次数
    pair_total_1 = hi_count + hello_count
    pair_total_2 = good_count + bye_count
    
    # 比较并输出结果
    if (pair_total_1 > pair_total_2) {
        print "Hi/hello是出现次数最多的词对"
    } else if (pair_total_2 > pair_total_1) {
        print "Good/Bye是出现次数最多的词对"
    } else {
        print "两组词对出现次数相同"
    }
}' Simple.txt

关键细节说明:

  • ^和$确保精确匹配单词,避免把high里的hi或者helloworld里的hello算进去
  • /i选项忽略大小写,如果你的文件里目标词有大小写混合(比如Hi/HELLO),这个设置很有用;如果需要严格区分大小写,删掉每个正则末尾的i即可
  • awk只需要扫描文件一次,处理大文件时比多次调用grep更快

方法2:用grep+wc配合bash判断(直观易读)

先分别统计两个词对的总出现次数,再用bash的条件语句比较结果:

# 统计hi/hello的总次数(-o只输出匹配部分,-i忽略大小写,\b确保单词边界)
pair1=$(grep -oiE '\b(hi|hello)\b' Simple.txt | wc -l)
# 统计Good/Bye的总次数
pair2=$(grep -oiE '\b(Good|Bye)\b' Simple.txt | wc -l)

# 比较次数并输出结果
if [ $pair1 -gt $pair2 ]; then
    echo "Hi/hello是出现次数最多的词对"
elif [ $pair2 -gt $pair1 ]; then
    echo "Good/Bye是出现次数最多的词对"
else
    echo "两组词对出现次数相同"
fi

关键细节说明:

  • -o参数让grep只输出每个匹配的单词,而不是整行,这样wc -l就能准确统计次数
  • \b是单词边界,避免部分匹配的情况
  • 如果不需要忽略大小写,去掉-i参数即可

内容的提问来源于stack exchange,提问作者Parth Parikh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:04:27