0' query-6ren">
gpt4 book ai didi

python - 使用 awk 比较并打印两个文件的输出

转载 作者:行者123 更新时间:2023-12-01 04:43:56 25 4
gpt4 key购买 nike

是否可以使用 awk 比较并返回两个匹配文件的结果?

我目前正在使用:

awk 'BEGIN{FS=OFS="\t"} NR==FNR{c[$1$2]++;next};c{$1$2}>0' queryfile hitsfile

匹配查询结果并返回命中中的输出,但它仅返回命中文件中的列

我已经尝试过:

awk 'BEGIN{FS=OFS="\t"} NR==FNR{c[$1$2]++;next};c{$1$2}>0 {print $1,$2,c[$1]}'

但是不起作用

我的示例数据如下所示:

查询文件

chr1 1000 1005 BDSD
chr1 1010 1015 SKK1
chr2 1015 1015 AVPR

点击文件

chr1 1000 1005 0.5
chr1 1001 1002 0.35
chr1 1010 1015 0.4
chr1 1011 1016 0.56
chr2 1015 1015 0.1

我希望我的输出文件如下所示

*output results*

chr1 1000 1005 0.5 BDSD
chr1 1010 1015 0.4 SKK1
chr2 1015 1015 0.1 AVPR

所以基本上,返回与查询匹配的命中以及查询数据中的另一列。使用 awk oneliners 可以吗?

另外,另一个问题是,是否可以在查询文件内给定查询范围,并返回与 awk 完全匹配的命中文件内的所有行?

通常我在 R 中执行这些操作,但处理大文件时速度很慢,而 awk 则快得多!

谢谢!

最佳答案

$ awk 'NR==FNR{a[$1,$2]=$4;next} ($1,$2) in a{print $0, a[$1,$2]}' queryfile hitsfile
chr1 1000 1005 0.5 BDSD
chr1 1010 1015 0.4 SKK1
chr2 1015 1015 0.1 AVPR

关于python - 使用 awk 比较并打印两个文件的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29908010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com