【发布时间】:2019-10-03 12:04:31
【问题描述】:
我有一个文件gff3.txt 包含这种数据(数十亿行):
scaffold1000|size145372 . gene 16987 23149 . - . ID=evm.TU.scaffold1000|size145372.2;Name=EVM%20prediction%20scaffold1000|size145372.2
scaffold1000|size145372 . mRNA 16987 23149 . - . ID=evm.model.scaffold1000|size145372.2;Parent=evm.TU.scaffold1000|size145372.2;Name=EVM%20prediction%20scaffold1000|size145372.2
scaffold1000|size145372 . exon 22965 23149 . - . ID=evm.model.scaffold1000|size145372.2.exon1;Parent=evm.model.scaffold1000|size145372.2
scaffold9|size467357 . gene 373475 396789 . + . ID=evm.TU.scaffold9|size467357.56;Name=EVM%20prediction%20scaffold9|size467357.56
scaffold9|size467357 . mRNA 373475 396789 . + . ID=evm.model.scaffold9|size467357.56;Parent=evm.TU.scaffold9|size467357.56;Name=EVM%20prediction%20scaffold9|size467357.56
scaffold9|size467357 . exon 373475 373695 . + . ID=evm.model.scaffold9|size467357.56.exon1;Parent=evm.model.scaffold9|size467357.56
...
还有一个文件`position.txt(十亿行):
scaffold1000|size145372.2 scaffold1000|size145372:16987-23149
scaffold9|size467357.56 scaffold10008|size45161:373475-396789
...
我搜索得到这个:
scaffold1000|size145372 . gene 16987 23149 . - . ID=evm.TU.scaffold1000|size145372:16987-23149;Name=EVM%20prediction%20scaffold1000|size145372:16987-23149
scaffold1000|size145372 . mRNA 16987 23149 . - . ID=evm.model.scaffold1000|size145372:16987-23149;Parent=evm.TU.scaffold1000|size145372:16987-23149;Name=EVM%20prediction%20scaffold1000|size145372:16987-23149
scaffold1000|size145372 . exon 22965 23149 . - . ID=evm.model.scaffold1000|size145372:16987-23149.exon1;Parent=evm.model.scaffold1000|size145372:16987-23149
scaffold9|size467357 . gene 373475 396789 . + . ID=evm.TU.scaffold10008|size45161:373475-396789;Name=EVM%20prediction%20scaffold10008|size45161:373475-396789
scaffold9|size467357 . mRNA 373475 396789 . + . ID=evm.model.scaffold10008|size45161:373475-396789;Parent=evm.TU.scaffold10008|size45161:373475-396789;Name=EVM%20prediction%20scaffold10008|size45161:373475-396789
scaffold9|size467357 . exon 373475 373695 . + . ID=evm.model.scaffold10008|size45161:373475-396789.exon1;Parent=evm.model.scaffold10008|size45161:373475-396789
...
所以我想在gff3.txt 文件的$9 列中找到与position.txt 中的$1 列匹配的模式,然后用@987654333 的第2 列的模式更改它们@文件。
我用 awk 试过了:
awk '
NR==FNR{a[$9]
next
}
($2 in a) {
print
}' gff3.txt position.txt > output.txt
但这没有用。可能是因为gff3.txt 的列$9 中的模式包含在其他信息中?
我也尝试用我的数据调整这些线程,但我没有实现:stackoverflow1、stackoverflow2、stackoverflow3、stackExchange...
任何关于在awk、sed 或其他人中编码的建议将不胜感激。
【问题讨论】:
-
position.txt文件的大小(条目数)是多少? -
@RomanPerekhrest 两个文件都有数十亿行(我通过编辑添加此信息)
-
不要 ``awk` '` 只是
awk '。没有反引号.. 你能准确地说出$9的价值是多少吗?来自gff3.txt的这些列?你想join文件,但我看不到你在哪个字段加入它们。您只想用scaffold1000|size145372.2替换scaffold1000|size145372:16987-23149吗?文件是否按指定列排序?它们可以在点之前的第一列连接吗? -
@Kamil Cuk 谢谢,当我写我的问题时这只是一个错误,当我尝试它时我只是 awk。我编辑了我的帖子,再次感谢。
-
只需要一个简单的
sed 's/scaffold9|size467357.56/scaffold10008|size45161:373475-396789/g'就可以吗?