如何从一个文件获取包含另一个文件中字符串的所有行



文件 1:

a
a
b
c
d

文件 2:

a a1
b b1
e e1
f f1

我想要的输出:

a a1
a a1
b b1

我正在尝试使用 bash 或 Python 来实现这一点。

在python中,我尝试过:

f1=open("file1")
f2=open("file2")
dpo1=f1.readlines()
dpo2=f2.readlines()
for i in dpo2:
    for j in dpo1:
        if j in i:
            print i

在 bash 中,我正在考虑使用 grep,但 grep 会给出与整行匹配的输出,但这里的情况并非如此。有什么想法吗?

in awk

如果字符串与任何字段匹配,将起作用。

awk 'FNR==NR{a[$1]++;next}{for(i=1;i<=NF;i++)if(a[$i]){print;next}}' file{1,2}
a a1
b b1

用于编辑

awk 'FNR==NR{a[$1]++;next}{for(i=1;i<=NF;i++)if(a[$i]){for(j=1;j<=a[$i];j++)print;next}}' file{1,2}
a a1
a a1
b b1

这就是最终有效的方法。

awk 'NR==FNR{a[$1]=$2;next}$0 in a{print $0,a[$0]}' file2 file1

如果文件不大,只需执行

dpo1 = [i.strip() for i in dpo1]
lines = [i.strip() for i in dpo2 if(any([j for j in dpo1 if j in i]))]
>>>lines
['a a1', 'b b1']
>>>for i in lines:
...    print i
'a a1'
'b b1'
f1=open("file1")
f2=open("file2")
dpo1=f1.readlines()
dpo2=f2.readlines()
for x in dpo2:
    for y in dpo1:
        if y.strip() in x:
            print x.strip()
            break

对于 dpo2(源文件,生成输出)中的每一行,测试它是否包含 dpo1(条件文件)中的一行。如果我们得到匹配项,请打印它并在 dpo2 中的下一行中断。

相关内容

  • 没有找到相关文章

最新更新