Grep XYZ 和显示线只有 X + 正则表达式

Grep XYZ and display line with only X + regex

提问人:Frilowe 提问时间:8/23/2023 最后编辑:Wiktor StribiżewFrilowe 更新时间:8/23/2023 访问量:55

问:

我有这个服务清单:list_services

user@10006
user@10007
user@10008
user@10009
user@1006
user@509
user@512
user@513
user@519

我想知道是否可以做到:

for service in $list_services :
    grep $service /tmp/file

无论如何,与我可以放入此 /tmp/file 中的内容(可能使用正则表达式)匹配。

感谢

我试过了

grep "^$service$" /tmp/file

在 /tmp/file 中使用 and 和user@.user@\duser@*

grep "$service" /tmp/file

在 /tmp/file 中带有一行 and 和user@.user@\duser@*

Linux Bash 格雷普

评论

1赞 Uberhumus 8/23/2023
您能否展示示例输入和示例所需输出?
0赞 Frilowe 8/23/2023
所需的输出是我应该放入文件中以匹配 grep $service我真的不知道是否可以以这种方式做到这一点(我知道另一种方式很容易做到)
0赞 Wiktor Stribiżew 8/23/2023
或?grep -E '^service@[0-9]+$' /tmp/file
0赞 Frilowe 8/23/2023
我想我已经把我的问题解释得很糟糕了,哈哈......(我的坏^^')如果我做“grep user@10006”/tmp/file 和“grep user@512” /tmp/file ,可能会有相同的输出吗?如果是,我必须在这个 /tmp/file 中放什么?
2赞 user1934428 8/23/2023
该字符串不会出现在您发布的文件中。我不清楚你期望从你的例子中得到什么结果。service

答:

0赞 Barmar 8/23/2023 #1

这听起来像是包含正则表达式,而不是需要与正则表达式匹配的行。要从文件中获取正则表达式,请使用 。/tmp/file-f filename

所以我想你想要

grep -f /tmp/file <<<"$list_services"