Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex BASH问题:比较两个不同的较大的文本文件集并获得匹配的IP地址_Regex_Bash_Shell_Awk_Sed - Fatal编程技术网

Regex BASH问题:比较两个不同的较大的文本文件集并获得匹配的IP地址

Regex 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

我有两个TXT文件,1.TXT有11000个IP,2.TXT有100万个IP。我想将1.txt2.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 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
    中的所有IP

  • 尝试了sed-n-f3.txt,再次从1.txt返回所有IP

  • 不确定我在哪里出错/无法使用sed、awk、comm或任何工具与100万IP进行匹配?有人能帮我提出问题所在吗

    Reference 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