我需要搜索目标目录中的所有文件,并从输入文件中打印所有匹配的找到的字符串。似乎不能这么做。下面是一个示例场景和问题:
$ tree .
.
├── input_file.txt
└── target-dir
├── target-file-A.txt
├── target-file-B.txt
├── target-subdir-A
│ ├── target-file-A.txt
│ └── target-file-B.txt
└── target-subdir-B
├── target-file-A.txt
└── target-file-B.txt
$ cat input_file.txt
abc
cba
bca
acb
$ cat target-dir/target-file-A.txt
abc
cba
bca
acb
$ cat target-dir/target-file-B.txt
acb
cba
abc
bca
0101
1010
$ grep -f input_file.txt -r .
./input_file.txt:acb
./target-dir/target-file-A.txt:acb
./target-dir/target-file-B.txt:acb
./target-dir/target-subdir-A/target-file-A.txt:acb
./target-dir/target-subdir-A/target-file-B.txt:acb
./target-dir/target-subdir-B/target-file-A.txt:acb
./target-dir/target-subdir-B/target-file-B.txt:acb
我只看到一个匹配的行打印(第一)和rest被忽略。我怎样才能把所有的匹配线打印出来?我需要搜索大量的网络日志,以查找对IOC (IP/URL)的所有点击,这比预期的要困难。编辑:-我应该提到这是“Ubuntu16.04.5LTS \n \l”在 10下作为WSL工作。
发布于 2018-12-07 03:37:15
您的grep命令:
grep -f input_file.txt -r .
应该按照您的期望工作,并匹配input_file.txt中的所有字符串,在./
下的所有文件中用新行分隔。在这种情况下,我怀疑在Windows下创建了Windows end行的文件。您可以尝试如下所示,以确保您有正确的UNIX端行:
find ./ -type f -print0 | xargs -0 dos2unix
再试一次。
发布于 2018-12-07 03:45:53
求你别杀我。也许有人会觉得这篇文章很有用。
解决方案是:行编码。由于我本机在Windows上运行--我的崇高文本被设置为"Windows“,而WSL是Unix,因此无法理解这些行尾。在编辑器中切换该选项后,一切工作正常:
$ cat -A input_file_changed.txt
abc$
cba$
bca$
acb
$ cat -A input_file.txt
abc^M$
cba^M$
bca^M$
acb
$ grep -f input_file_changed.txt -r .
./input_file.txt:abc
./input_file.txt:cba
./input_file.txt:bca
./input_file.txt:acb
./input_file_changed.txt:abc
./input_file_changed.txt:cba
./input_file_changed.txt:bca
./input_file_changed.txt:acb
./target-dir/target-file-A.txt:abc
./target-dir/target-file-A.txt:cba
./target-dir/target-file-A.txt:bca
./target-dir/target-file-A.txt:acb
./target-dir/target-file-B.txt:acb
./target-dir/target-file-B.txt:cba
./target-dir/target-file-B.txt:abc
./target-dir/target-file-B.txt:bca
./target-dir/target-subdir-A/target-file-A.txt:abc
./target-dir/target-subdir-A/target-file-A.txt:cba
./target-dir/target-subdir-A/target-file-A.txt:bca
./target-dir/target-subdir-A/target-file-A.txt:acb
./target-dir/target-subdir-A/target-file-B.txt:acb
./target-dir/target-subdir-A/target-file-B.txt:cba
./target-dir/target-subdir-A/target-file-B.txt:abc
./target-dir/target-subdir-A/target-file-B.txt:bca
./target-dir/target-subdir-B/target-file-A.txt:abc
./target-dir/target-subdir-B/target-file-A.txt:cba
./target-dir/target-subdir-B/target-file-A.txt:bca
./target-dir/target-subdir-B/target-file-A.txt:acb
./target-dir/target-subdir-B/target-file-B.txt:acb
./target-dir/target-subdir-B/target-file-B.txt:cba
./target-dir/target-subdir-B/target-file-B.txt:abc
./target-dir/target-subdir-B/target-file-B.txt:bca
https://stackoverflow.com/questions/53668490
复制相似问题