Arrays 在日志中查找IP地址时遇到问题

Arrays 在日志中查找IP地址时遇到问题,arrays,regex,bash,grep,Arrays,Regex,Bash,Grep,我正在尝试搜索一个包含超过25个日志文件(以.txt格式保存)的文件夹,其中大多数都超过500+MB(一个超过4.5GB),以查找超过75个不同IP的实例。我试着写一本书!bash脚本,它使用一个数组作为IP,但它永远不会超过第一个数组。还有人建议把所有IP放在一个txt文件中,然后grep-f放在带有*.txt的文件夹中;但是,尽管我在谷歌上搜索了又搜索,我没有找到一个这样的例子。 希望这里的其他人能帮忙。。你们一直都很“邪恶”聪明,我几乎总能在这里找到答案。提前谢谢 例:(用简单的英语) 日

我正在尝试搜索一个包含超过25个日志文件(以.txt格式保存)的文件夹,其中大多数都超过500+MB(一个超过4.5GB),以查找超过75个不同IP的实例。我试着写一本书!bash脚本,它使用一个数组作为IP,但它永远不会超过第一个数组。还有人建议把所有IP放在一个txt文件中,然后grep-f放在带有*.txt的文件夹中;但是,尽管我在谷歌上搜索了又搜索,我没有找到一个这样的例子。
希望这里的其他人能帮忙。。你们一直都很“邪恶”聪明,我几乎总能在这里找到答案。提前谢谢

例:(用简单的英语)

日志
文件夹包含27+个.txt文件(几乎每个文件都超过500MB)
每个文件有超过500000行的日志。例:

445678 14JAN13 221.33.124.321 443 192.168.1.34 /index.htm 200 juser myweb.com
IP_列表=75个唯一IP(其中一个为“221.33.124.321”,取自上述示例)

需要在日志中的每个文件中搜索IP_列表中的每个IP地址,并将输出发送到
logfile.txt+行的
REPORT.txt

2013-01-14.txt
445678 14JAN13 221.33.124.321 443 192.168.1.34 /index.htm 200 juser myweb.com
谢谢你们的帮助。

更新:
IP_列表示例(aka:sourceIP.txt):

logfile.txt中的内容示例(实际文件都在一个名为LogFiles的目录中,每个日志文件都以YYYY-MM-DD.txt命名,表示收集日期-so 2013-01-01.txt、2013-01-02.txt、2013-01-03.txt等)

--文件2013-01-01.txt--

--文件2013-01-03.txt--

上面的例子很简单;您应该能够了解我如何只需要有一个输出来报告,该输出将显示以下内容,因为这些行中的IP与我的IP_列表中的一个IP匹配

2013-01-01.txt 66769460    2013-01-01 17:05:38.000 66.33.212.118    NULL                                               192.168.100.89   80         GET        /wp-admin/                                         NULL                                                                                                                                                                                                                                                             302    NULL                                               NULL
2013-01-03.txt 66789530    2013-01-03 12:07:23.000 49.212.143.92    NULL                                               192.168.100.89   80         GET        /wp-admin/                                         NULL                                                                                                                                                                                                                                                             302    NULL                                               NULL
2013-01-03.txt 66789531    2013-01-03 17:05:59.000 168.215.136.66   NULL                                               192.168.146.109   80         GET        /                                                  NULL                                                                                                                                                                                                                                                             200    extranet\Anonymous                                 NULL
希望这能澄清问题。
格伦-当我运行你的脚本时,它给我的只是

/cygdrive/f/LogFiles/sourceIP.txt:5.135.81.16
/cygdrive/f/LogFiles/sourceIP.txt:49.212.143.92
/cygdrive/f/LogFiles/sourceIP.txt:98.126.218.88
/cygdrive/f/LogFiles/sourceIP.txt:168.215.136.66
/cygdrive/f/LogFiles/sourceIP.txt:66.33.212.118

如果您希望在每个文本文件中列出唯一的IP,请尝试此bash

#!/bin/bash
for file in *.txt; do
awk '!a[$3]++ {c++} END {print FILENAME,c}'  $file
done
-F匹配为普通字符串
-w匹配整个单词(因此模式“1.2.3.4”与11.2.3.44不匹配)

-f IP_LIST来命名保存模式的文件。

告诉我们您做了什么。也许我们可以帮你修好它!发布一些日志文件,并以代码格式包装。请包括并解释您的结果与所需结果的差异。包括您收到的任何错误消息。请阅读这篇文章和这篇博文。谢谢格伦-我相信你已经最接近我正在尝试做的事情了。根据Adi的上述评论,让我透露我迄今为止所取得的成就。(在“更新”之后添加到上述评论/问题)
2013-01-01.txt 66769460    2013-01-01 17:05:38.000 66.33.212.118    NULL                                               192.168.100.89   80         GET        /wp-admin/                                         NULL                                                                                                                                                                                                                                                             302    NULL                                               NULL
2013-01-03.txt 66789530    2013-01-03 12:07:23.000 49.212.143.92    NULL                                               192.168.100.89   80         GET        /wp-admin/                                         NULL                                                                                                                                                                                                                                                             302    NULL                                               NULL
2013-01-03.txt 66789531    2013-01-03 17:05:59.000 168.215.136.66   NULL                                               192.168.146.109   80         GET        /                                                  NULL                                                                                                                                                                                                                                                             200    extranet\Anonymous                                 NULL
/cygdrive/f/LogFiles/sourceIP.txt:5.135.81.16
/cygdrive/f/LogFiles/sourceIP.txt:49.212.143.92
/cygdrive/f/LogFiles/sourceIP.txt:98.126.218.88
/cygdrive/f/LogFiles/sourceIP.txt:168.215.136.66
/cygdrive/f/LogFiles/sourceIP.txt:66.33.212.118
#!/bin/bash
for file in *.txt; do
awk '!a[$3]++ {c++} END {print FILENAME,c}'  $file
done
grep -Fwf IP_LIST *.txt > report.out