gpt4 book ai didi

regex - 存在多个/不完整匹配项时 'grep -w -f"的行为

转载 作者:行者123 更新时间:2023-11-29 09:14:06 25 4
gpt4 key购买 nike

我正在使用 grep -w -f 从文件中提取与模式匹配的行。但是,如果与输入模式文件中的模式存在不完全匹配,它似乎会屏蔽稍后出现在输入模式文件中的完全匹配。我还缺少另一个 grep 选项吗?例如:

$ head list
tt140
tt1351
tt1354
tt998
tt1122

$ head match1
tt135
tt1122
tt1351

$ grep -w -f match1 list
tt1122

似乎 match1 中的第一个模式 tt135 干扰了后面的 tt1351。如果第一行被删除,则报告 tt1351 匹配。

$ head match2
tt1122
tt1351

$ grep -w -f match2 list
tt1351
tt1122

这是预期的行为吗?是否有另一个选项可以传递给 grep 来避免这种情况?

最佳答案

确实,正如@japyal 所述,grepBSD 版本中似乎存在错误(这也会影响 OSX)。

解决方法:

 grep -f <(sed 's/.*/\\<&\\>/' match1) list

这会动态地将 match1 中的字符串包含在 显式词边界正则表达式断言 中,就好像 match1 已被定义为:

\<tt135\>
\<tt1122\>
\<tt1351\>

净效果与指定了 -w 相同。

关于regex - 存在多个/不完整匹配项时 'grep -w -f"的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23505891/

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