【问题标题】:How to extract string between IDs in shell [duplicate]如何在shell中提取ID之间的字符串[重复]
【发布时间】:2021-02-21 18:02:19
【问题描述】:

我有一个如下所示的字符串:

RG="@RG\tID:HS2000-1015_160.7\tDS:ADNI_1380^LP6005117-DNA_G04^ADNI_WGS\tLB:LP6005117-DNA_G04\tPL:illumina\tPU:HS2000-1015_160.7\tSM:ADNI_1380"

我想提取ID: 之后和\t 之前的所有内容

并因此得到HS2000-1015_160.7。如果可能的话,我想要一个单线。

我试过的代码:

echo ${RG} | grep -oP "(?<=ID:)[^"\t"]*" 

这给了我HS2000-1015_160.7\

【问题讨论】:

  • 为什么grep...grep是过滤,而不是提取部分文本。
  • grep -oP "(?&lt;=ID:).*?(?=\\\t)" 应该可以工作

标签: bash shell grep


【解决方案1】:

试试:

sed 's/.*ID://;s/\\t.*//'
  • s/.*ID:// 删除前面的所有内容,包括 ID:
  • s/\\t.*//' 删除包括\t 字符之后的所有内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-26
    • 2019-10-13
    • 2012-11-27
    • 1970-01-01
    • 2020-11-07
    • 2021-01-22
    • 1970-01-01
    • 2020-03-23
    相关资源
    最近更新 更多