如何从文本文件中读取字符串并在grep中使用它们?
我有一个字符串文件,需要在另一个文件中搜索。所以我尝试了以下代码:
#!/bin/bash
while read name; do
#echo $name
grep "$name" file.txt > results.txt
done < missing.txt
echo 行确认文件正在被读入变量,但我的结果文件始终为空。在自己的作品上执行 grep 命令,我显然在这里遗漏了一些非常基本的东西,但我已经被卡住了一段时间,无法弄清楚。
我也试过在变量周围不加引号。有人可以告诉我我错过了什么吗?谢谢一堆
编辑 - 输入文件为 DOS 格式,将文件格式设置为 unix 并且现在工作正常
回答
使用grep 的-f选项:那么你只需要一个 grep 调用并且不需要循环。
grep -f missing.txt file.txt > results.txt
如果“missing.txt”的内容是固定字符串,而不是正则表达式,这将加快进程:
grep -F -f missing.txt file.txt > results.txt
如果你想在另一个文件中找到missing.txt的词,而不是部分词
grep -F -w -f missing.txt file.txt > results.txt