gpt4 book ai didi

正则表达式匹配尽可能多的字符串

转载 作者:行者123 更新时间:2023-12-02 08:28:13 27 4
gpt4 key购买 nike

我不知道这是否可行或有意义,但我正在尝试做的是 grepawk 匹配多个字符串的文件,但是只显示匹配最多字符串的匹配项。

所以我会有这样一个文件:

cat,dog,apple,bark,chair
apple,chair,wall
cat,wall
phone,key,bark,nut
cat,dog,key
phone,dog,key
table,key,chair

我想匹配包含大部分这些字符串的一行:cat|dog|table|key|wall。不一定要包括所有这些,但无论哪一行最匹配,都将其打印出来。

例如,我希望它显示以下输出:

cat,dog,key

因为它是包含正在搜索的大部分字符串的行。

我试过使用:

cat filename \
|egrep -iE 'cat' \
|egrep -iE 'dog' \
|egrep -iE 'table' \
|egrep -iE 'key' \
|egrep -iE 'wall'

但它只会显示显示所有字符串的行,我也试过:

egrep -iE 'cat|dog|table|key|wall' filename

但这会显示与这些字符串中的任何一个匹配的任何行。

正则表达式可以做这样的事情吗?

最佳答案

使用 awk,并为每个匹配的单词增加一个计数器。如果计数器高于最高计数,则保存此行。

awk 'BEGIN {max = 0}
{ count=0;
if (/\bcat\b/) count++;
if (/\bdog\b/) count++;
...
if (count > max) { saved = $0; max = count; }
}
END { print saved; }'

关于正则表达式匹配尽可能多的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29996911/

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