如果A = X,则仅保留list1中的元素(A,B),其中(X,Y)是list2的元素。

时间:2017-05-18 19:05:50

标签: python bash

我需要一个python或者甚至是bash解决方案来解决这个问题 我有两个列表(或者说是文本文件):

File1中:
A1 B1
A2 B2
A3 B3
...

文件2:
X1 Y1
X2 Y2
X3 Y3
...

我需要为所有N计算(BN-YN)(AN = XN),使得文件3看起来像:

文件3:
AN(= XN)BN-YN
AM(= XM)BM-YM
...

如果我可以选择A与X的所有交叉元素(和关联元素B),这将很容易,因为X是A的子集。

1 个答案:

答案 0 :(得分:1)

与bash相比,awk更适合文本处理任务。这是awk单行的样子:

$ head file{1,2}
==> file1 <==
1 10
3 11
5 12

==> file2 <==
5 5
3 6

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

这里需要注意的是,我们会将整个file1存储在内存中,因此如果file1非常大,您就不会想要使用此方法。