【发布时间】:2015-07-11 21:04:14
【问题描述】:
我不知道这是否可行或有意义,但我想做的是grep 或awk 匹配多个字符串的文件,但只显示匹配最多字符串的匹配项。
所以我会有一个类似的文件:
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 脚本来做到这一点。
-
会
cat匹配catch?