我是bash的新手。我有两个wordlist文件,如下所示。
file1(搜索词的词表)
foo
bar
file2(包含大量单词组合的wordlist)
beforefoo
fooafter
beforefooafter
bar
我想创建一个结果文件,其中包含来自file1的searchword和来自file2的所有单词,其中包含搜索词:
foo beforefoo fooafter beforefooafter
bar bar
我需要一个bash脚本来执行此操作。 File1和file2每行只包含一个单词,file1的行数约为50.000,file2的行数约为100.000.000所以我需要一个好的脚本来尽快完成这个。
感谢您的回答。
答案 0 :(得分:2)
使用awk:
awk 'FNR==NR{a[$1]; next}
{s=$1; for (i in a) if (index(i, $1)) s=s FS i; if (s!=$1) print s}' file2 file1
foo fooafter beforefoo beforefooafter
bar bar
答案 1 :(得分:1)
使用awk
awk 'NR==FNR{a[$1]=$1;next}
{ for (i in a) if ($0~i) a[i]=a[i] FS $0}
END{for (i in a) print a[i]}' file1 file2
NR==FNR{a[$1]=$1;next}
将第一个文件读入关联数组a
for (i in a) if ($0~i) a[i]=a[i] FS $0}
,如果第1列是a
的索引,则将第二个文件的内容附加到a
。END{for (i in a) print a[i]
打印数组