我有两个文件(a.txt,b.txt)
a.txt
是一个英文单词列表(在一行中有一个单词)
b.txt
包含在每一行中:一个数字,一个空格字符,一个5-65个字符长的字符串
(例如b.txt
可以包含:1234 dsafaaraehawada
)
我想知道b.txt
中的哪一行包含来自a.txt
的单词以及有多少单词?
示例输入:
A.TXT
green
apple
bar
b.txt
1212 greensdsdappleded
12124 dfsfsd
123 bardws
输出:
2 1212 greensdsdappleded
1 123 bardws
第一行包含'绿色'和' apple' (2) 第二行什么都没有。 第三行包含' bar' (1)
这就是我想知道的一切。
代码(由Barmar先生):
grep -F -o -f a.txt b.txt | sort | uniq -c | sort -nr
但它需要修改。
答案 0 :(得分:0)
尝试这样的事情:
awk 'NR==FNR{A[$1]; next} {t=0; for (i in A) t+=gsub(i,"&",$2)} t{print t, $0}' file1 file2
答案 1 :(得分:0)
尝试这样的事情:
awk '
NR==FNR { list[$1]++; next }
{
cnt=0
for(word in list) {
if(index($2,word) > 0)
cnt++
}
if(cnt>0)
print cnt,$0
}' a.txt b.txt
$ cat a.txt
green
apple
bar
$ cat b.txt
1212 greensdsdappleded
12124 dfsfsd
123 bardws
$ awk '
NR==FNR { list[$1]++; next }
{
cnt=0
for(word in list) {
if(index($2,word) > 0)
cnt++
}
if(cnt>0)
print cnt,$0
}' a.txt b.txt
2 1212 greensdsdappleded
1 123 bardws