将文件传输到grep并使用regex执行grep搜索

时间:2017-08-11 16:41:23

标签: bash grep

背景

我在keywords.txt中有以下关键字列表:

animal
building
person

以及users.txt中的以下虚假用户和密码列表:

user:animal@234
user2:animal234
user3:animal

我想使用grep来关联这两个文件(即在users.txt中搜索完全出现的每个关键字)

我的第一次尝试......

cat keywords.txt | grep -F -w -f- users.txt 

返回

user:animal@234
user3:animal

因为grep -w将返回关键字为"后面跟非字构成字符的行。"因此用户:动物@ 234被返回,因为关键字" animal"其次是非单词构成字符' @'被发现了。

我做了一些搜索,发现grep ":animal$" users.txt返回了所需的结果:

user3:animal

因为' $'是行尾的正则表达符号。

问题:

我无法实施搜索所有关键字的解决方案,而不仅仅是"动物。"

这是我到目前为止所拥有的:

while read line; do echo -n ":${line}$" | grep -F -f- users.txt; done < keywords.txt

不幸的是,^这个命令什么都不返回。它应该返回:

user3:animal

对我应该尝试的任何想法?

1 个答案:

答案 0 :(得分:2)

您可以使用awk

awk -F: 'NR==FNR{a[$1]; next} $2 in a' keywords.txt users.txt

user3:animal