如何使用文本文件的每一行来选择第二个文本文件中具有匹配字符串的行?

如何使用文本文件的每一行来选择第二个文本文件中具有匹配字符串的行?

假设我有两个文本文件 - active-users.txt 和 all-user-info.txt

active-users.txt 仅包含数字用户 ID。

all-user.txt 包含用户 ID 和其他信息字段。

我需要做的是创建第三个文本文件,其中包含 active-users.txt 中每个用户 ID 的完整信息行...

我在 bash 脚本和命令行中尝试了以下操作:

for i in $(< active-users.txt)
do
grep $i all-users.txt >> active-user-info.txt
done

让我发疯的问题是 active-user-info.txt 输出文件总是包含 all-user-info.txt 的所有内容 - 而且我希望它只包含包含 activeUsers 中的 userID 的行。 TXT

我缺少什么?

答案1

假设活跃用户.txt没有空行:

grep -f active-users.txt all-users.txt > active-users-info.txt

如果活跃用户.txt其中有一个或多个空行:

grep '.' active-users.txt | grep -f - all-users.txt > active-users-info.txt

答案2

这对我的测试文件有用

while read LINE; do
    grep "$LINE" all-users.txt >>active-users-info.txt
done <active-users.txt

相关内容