我有两个名为 db_name.txt 和 id.txt 的文件
db_name.txt 文件:
111111 Steven
222222 Bob
333333 Marry
444444 July
555555 Venus
666666 Porter
777777 Guerson
888888 Yeti
999999 Piza
https://filedn.com/lErjiEcIItPyfm4zDdHlyIz/db_name.txt
id.txt 文件:
222222
444444
777777
https://filedn.com/lErjiEcIItPyfm4zDdHlyIz/id.txt
我想要这样的结果:
222222 Bob
444444 July
777777 Guerson
我已经创建了 shell 脚本来循环 id.txt 内容和 cat db_name.txt,每行都有 grep 变量 id
#!/bin/bash
while IFS= read -r line
do
cat db_name.txt | grep "$line"
done < "id.txt"
但是没有结果
最佳答案
尝试:
$ grep -Ff id.txt db_name.txt
222222 Bob
444444 July
777777 Guerson
工作原理:
-F
告诉 grep 将模式视为固定文本(无事件正则表达式字符)。-f id.txt
告诉 grep 从文件id.txt
中读取模式。id.txt
中的每一行都被视为一个模式,独立于其他行。如果任何一个模式匹配,就会产生输出。
快速修复 DOS 行尾
id.dos
类似于 id.txt
但具有 DOS/Windows 行结尾。因此 grep -Ff id.dos db_name.txt
将不会产生任何输出。作为快速修复,请尝试:
$ grep -Ff <(tr -d '\r' <id.dos) db_name.txt
222222 Bob
444444 July
777777 Guerson
关于linux - grep 不显示从文件中读取 id 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57194650/