搜索文字

时间:2013-04-18 15:31:13

标签: linux shell unix awk grep

我正在尝试编写一个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和change变量,但没有成功。任何想法都会很棒!

1 个答案:

答案 0 :(得分: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