【问题标题】:Grabbing only text/substring between 4th and 7th underscores in all lines of a file在文件的所有行中仅获取第 4 和第 7 下划线之间的文本/子字符串
【发布时间】:2020-10-10 06:52:04
【问题描述】:

我有一个 list.txt,其中包含以下几行。

Primer_Adapter_clean_KL01_BOLD1_100_KL01_BOLD1_100_N701_S507_L001_merged.fasta
Primer_Adapt_clean_KL01_BOLD1_500_KL01_BOLD1_500_N704_S507_L001_merged.fasta
Primer_Adapt_clean_LD03_BOLD2_Sessile_LD03_BOLD2_Sessile_N710_S506_L001_merged.fasta

现在我想只抓取第 4 个下划线和第 7 个下划线之间的子字符串,使其如下所示

BOLD1_100_KL01
BOLD1_500_KL01
BOLD2_Sessile_LD03

我尝试了下面的 awk 命令,但我想我弄错了。这里的任何帮助将不胜感激。如果这可以通过 sed 实现,我也会对该解决方案感兴趣。

awk -v FPAT="[^__]*" '$4=$7' list.txt

【问题讨论】:

    标签: bash awk sed substring


    【解决方案1】:

    我觉得awk 对此有点过分了。您可以使用cut 来选择您想要的字段:

    $ cut -d_ -f5-7 list.txt
    BOLD1_100_KL01
    BOLD1_500_KL01
    BOLD2_Sessile_LD03
    

    【讨论】:

      【解决方案2】:
      awk 'BEGIN{FS=OFS="_"} {print $5,$6,$7}' file
      

      输出:

      BOLD1_100_KL01 BOLD1_500_KL01 BOLD2_Sessile_LD03

      【讨论】:

        猜你喜欢
        • 2012-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-23
        • 2013-01-25
        • 2014-09-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多