我有一个包含n个文本文件的目录。现在,我想检查,如果这些文件中的任何一个包含一个常量文件的一个(或多个)单词。 这些文件都是具有不同字数的字典。常量文件是密码列表,我想检查这些单词。正确命中的数量应保存在变量中。这个词也应该在变量中保存(我认为是一个数组)。
例如:file1
包含This is my dictionary
,file2
包含And another one
,我的密码列表包含this is a test for the dictionary and we have no other one
。
来自file1
的点击次数为This is dictionary
(n1=3
个字词)和file2
and one
个n2=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变量中。所以我认为每个字典都有两个变量。
答案 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