【问题标题】:partial merging 2 text file in linux在linux中部分合并2个文本文件
【发布时间】:2016-11-26 16:06:09
【问题描述】:

我有 2 个文本文件,我想将它们合并到一个新文件中。

我的第一个文件是这样的

DjScaffold1002  blastx  protein_match   50305   51044   125 -   .   ID=DjScaffold1002:hit:2832:3.10.0.0;Name=sp|Q9UEW3|MARCO_HUMAN
DjScaffold1002  blastx  protein_match   50305   50892   208 -   .   ID=DjScaffold1002:hit:2833:3.10.0.0;Name=sp|Q60754|MARCO_MOUSE
DjScaffold1002  blastx  protein_match   44584   45176   145 -   .   ID=DjScaffold1002:hit:2834:3.10.0.0;Name=sp|Q7SIB2|CO4A1_BOVIN

第二个文件 =

Q9UEW3  MARCO
Q60754  Marco
Q7SIB2  COL4A1

和我的预期输出一样,我的意思是从第一行到第二个文件的第一列映射第 9 列字符串的一部分,应该是这样的:

DjScaffold1002  blastx  protein_match   50305   51044   125 -   .   ID=DjScaffold1002:hit:2832:3.10.0.0;Name=sp|Q9UEW3|MARCO_HUMAN;Symbol=MARCO
DjScaffold1002  blastx  protein_match   50305   50892   208 -   .   ID=DjScaffold1002:hit:2833:3.10.0.0;Name=sp|Q60754|MARCO_MOUSE;Symbol=Marco
DjScaffold1002  blastx  protein_match   44584   45176   145 -   .   ID=DjScaffold1002:hit:2834:3.10.0.0;Name=sp|Q7SIB2|CO4A1_BOVIN;Symbol=COL4A1

另外,我想保留第一个文件中未与第二个文件映射的行。

如何使用 awk 执行此操作?

【问题讨论】:

  • 如果您使用 awk,则永远不需要 grep,因为 awk 可以做 grep 可以做的任何有用的事情。
  • 很抱歉,此命令不适用于我的文件。

标签: linux shell ubuntu awk grep


【解决方案1】:

您可以使用 awk 来合并它们:

awk 'FNR == NR{a[$1]=$2; next} $2 in a{$0 = $0 ";symbol=" a[$2]} 1' f2 FS='[|]' f1

L1  code=c|id1|;name=name1;symbol=symbol1
L2  code=c|id2|;name=name1;symbol=symbol2
L0  code=c|id0|;name=name0;

对于您编辑的样本:

awk 'FNR == NR{a[$1]=$2; next} $2 in a{$0 = $0 ";symbol=" a[$2]} 1' f2 FS='[|]' f1

DjScaffold1002  blastx  protein_match   50305   51044   125 -   .   ID=DjScaffold1002:hit:2832:3.10.0.0;Name=sp|Q9UEW3|MARCO_HUMAN;symbol=MARCO
DjScaffold1002  blastx  protein_match   50305   50892   208 -   .   ID=DjScaffold1002:hit:2833:3.10.0.0;Name=sp|Q60754|MARCO_MOUSE;symbol=Marco
DjScaffold1002  blastx  protein_match   44584   45176   145 -   .   ID=DjScaffold1002:hit:2834:3.10.0.0;Name=sp|Q7SIB2|CO4A1_BOVIN;symbol=COL4A1

【讨论】:

  • 它适用于显示的示例数据。如果您的数据与您的数据不同,您应该相应地更新问题。
  • 亲爱的@anubhava,您的上一版工作正常。我感谢您的帮助。艾哈迈德
猜你喜欢
  • 2012-11-30
  • 2020-09-18
  • 2015-01-20
  • 2019-02-06
  • 2018-01-04
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 2017-09-14
相关资源
最近更新 更多