背景
我在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
对我应该尝试的任何想法?
答案 0 :(得分:2)
您可以使用awk
:
awk -F: 'NR==FNR{a[$1]; next} $2 in a' keywords.txt users.txt
user3:animal