Regex BASH问题:比较两个不同的较大的文本文件集并获得匹配的IP地址
我有两个TXT文件,1.TXT有11000个IP,2.TXT有100万个IP。我想将1.txt与2.txt(100万IP)进行匹配,并获得匹配的IPRegex BASH问题:比较两个不同的较大的文本文件集并获得匹配的IP地址,regex,bash,shell,awk,sed,Regex,Bash,Shell,Awk,Sed,我有两个TXT文件,1.TXT有11000个IP,2.TXT有100万个IP。我想将1.txt与2.txt(100万IP)进行匹配,并获得匹配的IP #1.txt 1,1.1.1.1 2,2.2.2.2 3,3.3.3.3 ......... #2.txt 51.51.6.10 12.10.25.16 1.3.50.55 0.0.0.0 6.6.6.6 1.1.1.1 2.2.2.2 5.5.5.5 6.6.6.6 7.7.7.7 20.200.100.30 Like wise 1 Milli
#1.txt
1,1.1.1.1
2,2.2.2.2
3,3.3.3.3
.........
#2.txt
51.51.6.10
12.10.25.16
1.3.50.55
0.0.0.0
6.6.6.6
1.1.1.1
2.2.2.2
5.5.5.5
6.6.6.6
7.7.7.7
20.200.100.30
Like wise 1 Million lines of IPs.......
Matching Result :
1,1.1.1.1
2,2.2.2.2
awk-F,'NR==FNR{a[$0];next}($a中的2)'2.txt 1.txt
,它给出了较小子集(测试运行)的确切答案。但是对照11000个原始文件和100万个IP,它将返回1.txt
中的所有IPReference Used : http://stackoverflow.com/questions/4366533/remove-lines-from-file-which-appear-in-another-file
假设#1:文件按原始问题所示进行排序
假设#2:ip地址是唯一的
如果您只需要IP地址:
$ comm -12 <(cut -d, -f2 1.txt) 2.txt
1.1.1.1
2.2.2.2
$ comm -12 <(cut -d, -f2 1.txt |sort) <(sort 2.txt)
1.1.1.1
2.2.2.2
$comm-12 awk命令不会改变它对更大数据集的工作方式…在1.txt中获取整行时,我的状态为comm:file 2未按排序顺序。通信:文件2未按顺序排序?但是我已经对文件进行了排序(#sort nu)。我在@mauro再次尝试,当重定向到一个文件并进行检查时,结果为空。我在ubuntu 12.04机器上运行它。@Arun。检查您的输入文件head-n1.txt | od-c
和类似的2.txt检查#1.txt@mauro,我得到:00000003,50。1 6 . 2 2 4 . 1007\n00000205,95。1 7 0 . 7 2 . 1 13 \n 00000 40 6,2 11 2。8 4 . 6 6 . 19 \n 7 0000060,2 11 3。1 7 9 . 5 4 . 11\n 9 00001000,11 18。1 2 7 . 4 5 . 4 5\n 0000117检查#2.txt@mauro我得到了:00000001。5 2 . 3 5 . 1 6\n 1。2 3 0000020 4 . 5 1 . 2 3 0\n 4。2 6 . 6 0000040 7 . 1 2\n 4。2 6 . 2 0 9 . 0000060 2 5 0\n 4。5 3 . 1 1 1 . 3 3 0000100\n 0000102
$ comm -12 <(cut -d, -f2 1.txt |sort) <(sort 2.txt)
1.1.1.1
2.2.2.2
$ comm -12 <(cut -d, -f2 1.txt |sort) <(sort 2.txt) | while read ip ; do grep $ip 1.txt ; done
1,1.1.1.1
2,2.2.2.2