【问题标题】:Searching for text搜索文本
【发布时间】:2013-04-18 15:31:12
【问题描述】:

我正在尝试编写一个 shell 脚本来搜索文件中的文本并将文本和相关信息打印到单独的文件中。

来自这个包含基因 ID 列表的文件:

DDIT3   ENSG00000175197
DNMT1   ENSG00000129757
DYRK1B  ENSG00000105204

我想在 gtf 文件中搜索这些基因 ID (ENSG*)、它们的 RPKM1 和 RPKM2 值:

chr16   gencodeV7       gene    88772891        88781784        0.126744        +       .       gene_id "ENSG00000174177.7"; transcript_ids "ENST00000453996.1,ENST00000312060.4,ENST00000378384.3,"; RPKM1 "1.40735"; RPKM2 "1.61345"; iIDR "0.003";
chr11   gencodeV7       gene    55850277        55851215        0.000000        +       .       gene_id "ENSG00000225538.1"; transcript_ids "ENST00000425977.1,"; RPKM1 "0"; RPKM2 "0"; iIDR "NA";

并将其打印/写入单独的输出文件

Gene_ID         RPKM1   RPKM2
ENSG00000108270 7.81399 8.149
ENSG00000101126 12.0082 8.55263

我已经在命令行使用每个 ID 完成了:

grep -w "ENSGno" rnaseq.gtf| awk '{print $10,$13,$14,$15,$16}' > output.file

但是在编写 shell 脚本时,我尝试了 for、while、read、do 和更改变量的各种组合,但没有成功。任何想法都会很棒!

【问题讨论】:

  • 如何从样本数据中获取那些 RPKM[12] 值?
  • RPKM 是样品中 mRNA 丰度的量度;该技术是RNAseq。 RPKM 定义为每千碱基每百万读取的读取。希望这可以帮助?谢谢哈丽特

标签: linux shell unix awk grep


【解决方案1】:

你可以这样做:

while read line
do
  var=$(echo $line | awk '{print $2}')
  grep -w "$var" rnaseq.gtf| awk '{print $10,$13,$14,$15,$16}' >> output.file
done < geneIDs.file

【讨论】:

  • 嗨,我试过了,我得到了基因 ID,它是对应的 RPKM1&2 值,但它会打印出目标 rnaseq.gtf 文件中的所有基因 ID。我不知道如何一遍又一遍地针对同一个目标 rnaseq.gtf 文件搜索源geneID.csv 文件中找到的术语,并将匹配的geneID 和RPKM1&2 值打印到单独的输出文件中。谢谢哈丽特
  • 嗯,我真的不明白这个问题。您可以使用所需的准确输入和准确输出来更新您的帖子吗?我刚刚将您的grep 包装在while read file 中使用,假设grep 工作正常。
猜你喜欢
  • 2023-03-28
  • 2011-08-09
  • 2016-05-28
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多