检查目录中的任何文件是否包含常量文件中的单词

时间:2016-10-14 18:38:38

标签: linux bash variables dictionary compare

我有一个包含n个文本文件的目录。现在,我想检查,如果这些文件中的任何一个包含一个常量文件的一个(或多个)单词。 这些文件都是具有不同字数的字典。常量文件是密码列表,我想检查这些单词。正确命中的数量应保存在变量中。这个词也应该在变量中保存(我认为是一个数组)。

例如:file1包含This is my dictionaryfile2包含And another one,我的密码列表包含this is a test for the dictionary and we have no other one。 来自file1的点击次数为This is dictionaryn1=3个字词)和file2 and onen2=2个字词。

我现在的代码是

#!/bin/bash
# program_call passwordlist.txt *.txt
passwordlist="$1"
dictionarys="$*"
for comparison in  $dictionarys; do
  cat $passwordlist $comparison| sort | uniq -d >${comparison}.compare
done

我最大的问题之一是,我有不同数量的词典。也许是2,也许是200.没关系,所有这些都必须根据密码列表进行检查,结果(正确的单词和正确的单词本身)必须保存在他的OWN变量中。所以我认为每个字典都有两个变量。

2 个答案:

答案 0 :(得分:1)

另一种方式

$ for f in file{1,2}; 
  do echo -n $f": "; 
     grep -iow -f <(tr ' ' '\n' <cons) $f | 
     wc -l; 
  done

file1: 3
file2: 2

将常量文件转换为每行一个单词,检查字典文件中的单词匹配忽略大小写并计算匹配的出现次数。

答案 1 :(得分:0)

我的解决方案:

#!/bin/bash 
# program_call_is /dictionarys/*.txt passwordlist.txt
dictionarys="$1"
shift
passwordlist="$*"
for comparison in  $dictionarys; do
fgrep -x -f $passwordlist $comparison >${comparison}.compare
done