我正在尝试搜索超过25个日志文件(以.txt格式保存)的文件夹,其中大部分超过500 + MB(一个超过4.5GB),用于超过75种不同IP的实例。我曾尝试编写一个使用数组作为IP的!bash脚本,但它永远不会超越第一个。 Somone建议将所有IP放在txt文件中,然后使用* .txt对文件夹进行grep -f;但是虽然我在Google上搜索和搜索,但我找不到它的例子 希望这里的其他人可以提供帮助..你们一直都是“邪恶”的聪明人,我几乎总能在这里找到答案。提前谢谢。
Ex :(用简单的英语)
日志
文件夹包含27个以上的.txt文件(几乎全部超过500MB)
每个文件都有超过500,000行的博客。例如:
445678 14JAN13 221.33.124.321 443 192.168.1.34 /index.htm 200 juser myweb.com
IP_LIST = 75个唯一的IP(其中一个是“221.33.124.321”,取自上面的示例)
需要在LOGS中搜索IP_LIST中每个IP地址的每个文件,并将输出发送到REPORT.txt
的{{1}}例如:
logfile.txt + line
感谢您提供的任何帮助。
更新:
IP_LIST(aka:sourceIP.txt)示例:
2013-01-14.txt
445678 14JAN13 221.33.124.321 443 192.168.1.34 /index.htm 200 juser myweb.com
logfile.txt中的内容示例(实际文件都在一个名为LogFiles的目录中,每个日志文件由YYYY-MM-DD.txt命名为收集日期 - 所以2013-01-01.txt,2013 -01-02.txt,2013-01-03.txt等。)
- file 2013-01-01.txt -
5.135.81.16
49.212.143.92
98.126.218.88
168.215.136.66
66.33.212.118
- file 2013-01-03.txt -
66735956 2013-01-01 20:57:26.000 71.171.122.17 GHE 192.168.146.109 443 GET /sites/_themes/Hello/topshape_hello.jpg NULL 200 myweb\juser myweb.com
66735957 2014-01-01 20:57:27.000 71.171.122.17 GHE 192.168.146.109 443 GET /sites/_themes/Hello/bottomshape_hello.jpg NULL 200 myweb\juser myweb.com
66735958 2013-01-01 20:57:28.000 71.171.122.17 GHE 192.168.146.109 443 GET /sites/_themes/Hello/topshape_hello.jpg NULL 200 myweb\juser myweb.com
middlenav.jsp
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
66769461 2013-01-01 17:05:46.000 46.165.195.139 NULL 192.168.100.89 80 GET / NULL 200 extranet\Anonymous NULL
上面有一个非常简短的例子;你应该能够知道我需要如何只有一个输出来报告,因为这些行中的IP与我的IP_LIST中的一个IP匹配。
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
66789531 2013-01-03 17:05:59.000 168.215.136.66 NULL 192.168.146.109 80 GET / NULL 200 extranet\Anonymous NULL
66789532 2013-01-03 17:06:44.000 46.165.195.139 NULL 192.168.100.89 80 GET / NULL 200 extranet\Anonymous NULL
希望这能解决被问到的问题 格伦 - 当我运行你的剧本时,它给了我的全部是
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
的
答案 0 :(得分:1)
grep -Fwf IP_LIST *.txt > report.out
-F匹配为普通字符串
-w匹配整个单词(因此模式“1.2.3.4”与11.2.3.44不匹配)
-f IP_LIST命名包含模式的文件。
答案 1 :(得分:0)
如果您想在每个文本文件中列出唯一的IP,请尝试使用此bash
#!/bin/bash
for file in *.txt; do
awk '!a[$3]++ {c++} END {print FILENAME,c}' $file
done