我有一个巨大的文本文件,每行包含字符串(正确编辑,没有空行或前导或尾随空格)示例输入文件
WeatherNation.us
AccuWeatherNOW.us
FashionTVUHD.fr
some upper case and lower case letters but without any blank.<country-tld>
so on
我想在具有大量目录和 xml 文件的目录中搜索包含这些单词(一个接一个)的文件...单个搜索的工作命令是
grep -irwn "WeatherNation.us" /home/user/folder/
它显示带有路径和行号的文件。
搜索必须在 /home/user/folder/ 下执行,其中有许多文件夹,例如 ..fold1、fold2、fold3 等,每个文件夹都有许多文件,例如 ..1.xml 2.xml 3.xml 等。
grep -irwn "WeatherNation.us" /home/user/folder/
可以返回许多文件的输出。
Fold3 内的 2.xml 和 Fold2 内的 5.xml 中的示例条目也有一些搜索仅返回 1 个条目,或者在找不到字符串的情况下返回任何内容。
我尝试制作如下脚本来自动执行所有搜索
#!/bin/bash
file="in.txt"
while read -r line; do
grep -irwn "$line" /home/user/folder/ >> out.txt
done <$file
将每次搜索的结果存储在 out.txt 文件中...但脚本无法正常工作且 out.txt 文件为空。尝试了很多其他选择
grep -irwn ""$line"" /home/user/folder
我使用 $line 因为上面脚本中 while do 循环内的
echo "$line"
正确显示每行的所有输入,但我不知道如何将其传递给 grep 命令。
我对所有其他实用解决方案持开放态度,使用 awk sed
等。
输入文件有 dos 行结尾。使用所有可能的输入测试的正确代码与我最初使用
$line
而不是 "$line"
尝试的代码相同。
grep -irwnF -f in.txt /home/user/folder > out.txt
也可以工作,但会跳过其他文件中匹配的一些输出。