合并两个文件时,awk不会从第一个文件打印

时间:2017-07-11 20:19:20

标签: unix awk

我正在尝试根据特定列合并两个文件。我使用下面的代码

def f(t, lst):
    sum = 0
    for a, E in lst:
        sum += a*np.exp(-E*t)
    return sum

我的temp2.​​txt看起来像

➜  ~ pip install --upgrade pip
➜  ~ pip install --upgrade virtualenvwrapper
➜  ~ mkvirtualenv -p /usr/local/bin/python3 test_env

和我的temp3.txt看起来像

awk 'NR==FNR{a[$2]=$3; next}$1 in a{print a[$2], $0}' temp2.txt temp3.txt

我的输出如下

0 a1 0 G T
0 a2 0 A T
0 a3 0 C T

虽然我的预期结果是

a1 G
a2 T
a3 C

有没有理由不打印第一个文件的匹配结果?

1 个答案:

答案 0 :(得分:1)

您也可以使用join命令执行此操作:

join -o 1.1 1.2 2.2 -1 2 -2 1 temp2.txt temp3.txt

即:从文件1输出第1列和第2列,从文件2(-o 1.1 1.2 2.2)输出第2列,从文件1加入第2列,从文件2加载第1列(-1 2 -2 1)。

打印文件一(temp2.​​txt)中所有列的awk替代方法可以是这样的:

awk 'NR==FNR{a[$1]=$2; next}$2 in a{print $0, a[$2]}' temp3.txt temp2.txt

输出:

0 a1 0 G T G
0 a2 0 A T T
0 a3 0 C T C