gpt4 book ai didi

regex - awk 模式匹配和允许一个歧义/不匹配的解决方案

转载 作者:行者123 更新时间:2023-12-01 09:24:12 25 4
gpt4 key购买 nike

我想计算文档中字符串的数量。

如果输入是:

GGTGGTGGTAT
GGTAGTGGTAT
GGTGGTGGTAT
GGTAATGGTAT

我搜索 GGTGGTGGT 我想找到 3 个匹配项。允许一种歧义。

使用 egrep 它看起来像这样并且输出为 3。
 egrep -c "GGTGGTGGT|.GTGGTGGT|G.TGGTGGT|GG.GGTGGT|GGT.GTGGT|GGTG.TGGT|GGTGG.GGT|GGTGGT.GT|GGTGGTG.T|GGTGGTGG." input

最佳答案

这是一种使用 bash 生成该正则表达式的方法:

$ patt=(GGTGGTGGT)
$ for ((i=0; i<${#patt[0]}; i++)); do
patt+=( "${patt[0]:0:i}.${patt[0]:i+1}" )
done
$ regex=$(IFS='|'; echo "${patt[*]}")
$ echo "$regex"
GGTGGTGGT|.GTGGTGGT|G.TGGTGGT|GG.GGTGGT|GGT.GTGGT|GGTG.TGGT|GGTGG.GGT|GGTGGT.GT|GGTGGTG.T|GGTGGTGG.

进而:
awk -v regex="$regex" '$0 ~ regex' file

或者仅使用 awk:
awk -v srch=GGTGGTGGT '
BEGIN {
regex = srch
for (i=1; i<=length(srch); i++)
regex = regex "|" substr(srch,1,i-1) "." substr(srch, i+1)
}
$0 ~ regex
' << END
GGTGGTGGTAT
GGTAGTGGTAT
GGTGGTGGTAT
GGTAATGGTAT
END
GGTGGTGGTAT
GGTAGTGGTAT
GGTGGTGGTAT

关于regex - awk 模式匹配和允许一个歧义/不匹配的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28289363/

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