我正在尝试根据特定列合并两个文件。我使用下面的代码
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
有没有理由不打印第一个文件的匹配结果?
答案 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