比较两个文本文件并计算出现次数

时间:2014-03-27 11:47:50

标签: shell scripting ssid

我正在写一篇关于拥有公共接入点名称的危险的博客文章。

所以我做了一些获取接入点名称列表的方法,并且我从Renderlab下载了1000个最常见的接入点名称列表(其中存在彩虹表)。

但是如何比较这两个文本文件,看看有多少收集的访问点名称可以接受来自彩虹表的攻击?

文本文件的构建如下:

collect.txt:

linksys
internet
hotspot

调用最常见的接入点名称 SSID.txt:

default
NETGEAR
Wireless
WLAN
Belkin54g

因此脚本应对行进行排序,比较它们并显示在SSID.txt中找到来自gather.txt的行的次数..

这有什么意义吗?任何帮助将不胜感激:))

3 个答案:

答案 0 :(得分:2)

如果您不介意使用python脚本:

file1=open('collected.txt', 'r')            # open file 1 for reading
with open('SSID.txt', 'r') as content_file: # ready file 2
    SSID = content_file.read()

found={}                                    # summary of found names
for line in file1:
    if line in SSID:
        if line not in found:
            found[line]=1
        else:
            found[line]+=1
for i in found:
    print found[i], i                       # print out list and no. of occurencies

...它可以在包含这些文件的目录中运行 - gather.txt和SSID.txt - 它将返回一个如下所示的列表:

5 NETGEAR
3 default
(...)

脚本逐行读取文件1并将其与整个文件进行比较2.可以轻松修改它以从命令提示符处获取文件名。

答案 1 :(得分:0)

首先,看一下关于sdiff命令的简单教程,比如How do I Compare two files under Linux or UNIX。此外,Notepad ++支持此功能。

答案 2 :(得分:0)

要查找文件A中每行显示在文件B中的次数,您可以执行以下操作:

awk 'FNR==NR{a[$0]=1; next} $0 in a { count[$0]++ } 
    END { for( i in a ) print i, count[i] }' A B

如果要对输出进行排序,请将输出传递给sort,但不需要排序只是为了查找计数。请注意,可以省略$0 in a子句,但代价是消耗更多内存,如果文件B非常大,则可能会出现问题。