NICOLSON的个人博客分享 http://blog.sciencenet.cn/u/NICOLSON

博文

[转载][linux]根据一串ID批量提取另外一个文件的指定行

已有 2393 次阅读 2020-7-30 17:36 |个人分类:生物信息学|系统分类:科研笔记|文章来源:转载

👢[linux]根据一串ID批量提取另外一个文件的指定行

郑宝童关注

12018.11.03 14:19:05字数 331阅读 2,044

一、待解决问题

    科室里的一个小伙伴打算根据A文件中的ID列,提取B文件中所有包含相应ID的行。
  • A文件如下所示。tip:ID列指的是图中带红框的那列,A大小73.1MB、B大小约1GB

    image.png

  • B文件是从网上下载的注释文件"GCF_000001405.38_GRCh38.p12_genomic.gff"

二、解决办法

    左思右想觉得这个处理过程还是用linux来做比较简单。

    1. 用excel手动删除A多余列只保留第二列中的ID值,保存为ref.txt


    1. 书写linux代码进行提取

#!/bin/bash

cat -A ref.txt | while read id;
do
    real_id=`echo $id| cut -d"^" -f1`
    grep $real_id GCF_000001405.38_GRCh38.p12_genomic.gff >>ref.gff
done

三、解析

四、代码思路

cat提取整个文件内容;用|管道符号传给 while read读取,
由于window下的回车符号与Linux下的回车不一样:window下的回车到了linux下会多出^M,所以在代码中用cut -d"^"分割文件,并取第一部分作为ID。最后使用grep 搜索ID 然后>>输出到ref.gff文件去




http://blog.sciencenet.cn/blog-2675068-1244281.html

上一篇:[转载]解决 Endnote 的 Word 插件 不自动加载
下一篇:2013--PVC超级门:细菌定义的例外?

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2021-10-21 18:30

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部