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

Shell 比较两个文本文件并计算出现次数,shell,scripting,ssid,Shell,Scripting,Ssid,我正试图写一篇关于使用公共访问点名称的危险的博客文章 所以我做了一些wardriving来获得一个访问点名称列表,并从Renderlab下载了1000个最常见的访问点名称列表(存在彩虹表) 但是,我如何比较这两个文本文件,以查看我收集的访问点名称中有多少会受到来自rainbow表的攻击 文本文件的构建方式如下: collected.txt: linksys internet hotspot 最常见的访问点名称称为 SSID.txt: default NETGEAR Wireless WLAN

我正试图写一篇关于使用公共访问点名称的危险的博客文章

所以我做了一些wardriving来获得一个访问点名称列表,并从Renderlab下载了1000个最常见的访问点名称列表(存在彩虹表)

但是,我如何比较这两个文本文件,以查看我收集的访问点名称中有多少会受到来自rainbow表的攻击

文本文件的构建方式如下:

collected.txt:

linksys
internet
hotspot
最常见的访问点名称称为 SSID.txt:

default
NETGEAR
Wireless
WLAN
Belkin54g
因此,脚本应该对这些行进行排序、比较,并显示在SSID.txt中找到collected.txt中的行的次数


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

首先,看一看关于sdiff命令的简单教程,如。此外,记事本++也支持这一点

要查找文件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可以省略,但会消耗更多内存,如果文件B非常大,这可能是一个问题。

如果您不介意使用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
…它可以在包含以下文件的目录中运行-collected.txt和SSID.txt-它将返回如下所示的列表:

5 NETGEAR
3 default
(...)

脚本逐行读取文件1,并将其与整个文件2进行比较。它可以很容易地修改为从命令提示符获取文件名。

可能与我不介意使用Python的版本重复。但我无法运行此脚本。它与collected.txt和SSID.txt位于同一目录中,但是当我使用“python compare.py”执行它时,什么都没有发生。我运行Python 2.7.5+。你知道可能出了什么问题吗?:)不客气。很高兴能提供帮助-也感谢我第一次在这里接受答案:)真棒:)!我在我的帖子上赞扬了你: