bash – 根据字符串中的ID删除重复的行

原创 287865  2019-06-05 17:50 

我想根据输入行中

 

之后的数字删除重复项(并保留第一个重复项)。我只知道如何按列过滤:

 

但这不起作用。

输入(标签分隔):

[ 123]

 gene2 mrna geneid:109200613; genbank:xm_019356192.2 &lt;- gene1 mrna geneid:109200613;genbank:xm_019356191.2<br /> gene3 mrna geneid:109200614; genbank:xm_019356193.2 <br /> gene4 mrna geneid:109200615; genbank:xm_019356193.2 <br />  - &gt; <br />

out:

 gene3 mrna geneid:109200614; genbank:xm_019356193。 2 &lt;- gene1 mrna geneid:109200613;genbank:xm_019356191.2<br /> gene4 mrna geneid:109200615; genbank:xm_019356193.2 <br />  - &gt; <br />

最佳答案:

[123 ]


通过

geneid

  - &gt; &lt;-<br />过滤掉重复的内容:<br />

 $ awk'start {fs = ofs =“\ t”} {f3 = $ 3; sub(“;。*”,“”,f3)}!a [f3] ++'test.txt

  - &gt; &lt;-<br /> <br />
详情:

  • fs = ofs =“\ t”
      - &gt; &lt;-<br />  - 输入/输出字段分隔符<br />
  • f3 = $ 3
      - &gt; [123 ]  - 将第3个字段值复制到变量&lt;-<br /> <br /> f3

    - >

     &lt;-<br /> <br />
  • sub(“;。*”,“”,f3)[ 123] - >

  • - 从
     &lt;-<br /> f3 <br />  - &gt;

    值中删除

     &lt;-<br />; <br />  - &gt;

    之后的所有字符(仅获取基数带前缀)

     &lt;-<br /> <br />

    !a [f3] ++

  • - >

  • - 关键变量唯一出现的打印记录
     &lt;-<br /> f3 <br /> - &gt;
     &lt;-<br /> <br />输出:

gene1 mrna geneid:109200613; genbank:xm_019356191.2gene1 mrna geneid:109200614; genbank:xm_019356193.2gene1 mrna geneid:109200615; genbank:xm_019356193.2

- >

  <-

本文地址:https://www.xileso.top/305.shtml
版权声明:本文为原创文章,版权归 287865 所有,欢迎分享本文,转载请保留出处!

发表评论


表情