gpt4 book ai didi

linux - 如何使用 bash 脚本计算单词中出现次数最多的 3 个字母序列

转载 作者:太空宇宙 更新时间:2023-11-04 05:07:16 25 4
gpt4 key购买 nike

Indo Cheap 有一个示例文件,例如

XYZAcc
ABCAccounting
Accounting firm
Accounting Aco
Accounting Acompany
Acoustical consultant

他需要获取单词中出现次数最多的 3 个字母序列。

输出应该是

acc = 5 aco = 3

他询问这在 bash 中是否可行。

他说:“我完全不知道如何使用 awk、sed、grep 来完成它。

任何线索怎么可能......”

最佳答案

这对于 bash、sed 和 awk 来说绝对是可能的,具体方法如下:

#!/bin/bash

for line in $(cat sample | tr 'A-Z' 'a-z' | tr -s ' ' '\n'); do
ll=${#line}
for ((i = 0; i < ll - 2; i++)) ; do # for each word
echo ${line:i:3} # print all sequences of 3 letters
done
done |
sort | # sort the sequences of three letters
uniq -c | # count the sequences
sed '/^ *1 /d' | # filter out the not repeated sequences
sort -n -r | # most frequent sequences first
awk -F ' ' '{print $2" = "$1}' | # format output as asked
tr '\n' ' ' # put all results on one line
echo # add a new line at the end

上面示例的输出是:

cou = 5 acc = 5 unt = 4 tin = 4 oun = 4 nti = 4 ing = 4 cco = 4 aco = 3

如果需要其他格式的输出,我们可以根据需要轻松调整脚本代码。

关于linux - 如何使用 bash 脚本计算单词中出现次数最多的 3 个字母序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59724585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com