【问题标题】:Extract the section of string from a file and store as list with file name从文件中提取字符串部分并存储为带有文件名的列表
【发布时间】:2020-05-26 11:29:47
【问题描述】:

我有几个看起来像这样的文件。

RF02883_full.txt

# STOCKHOLM 1.0

#=GF ID   BcKCsr2
#=GF DE   Burkholderia sRNA 2

AM747720.1/2136330-2136461 AUGAAUGCCAGUUCGCCCCAUAUUUCUCGUAGCUGCGC------CGGUGC--------CCGUUG---------------CAAUGCUUCCC----------GGCACCUGACGC---GCAUCACGACG--GCAU-CAGCCGAGCCGCAUGUCCCUGUCGACGGGGCAGCGGCUUUUUUU
BX571965.1/1703315-1703186 AUGAAUGCCUGUCCGACCCAUUUUUCUCGUAGCUGCGC------CGGUGG--------UCCAAA---------------CGAUGCGCCCA----------CGCGCCUGACGCGCAGCACG---ACG--GUUA-AAGCCGAGCCGCUCGCCCCUGUU--CGGGGGAGCGGCUUUUUUU

NF0023_full.txt

# STOCKHOLM 1.0

#=GF ID   B
#=GF DE   B 2

BX57195.1/1703315-1703186 AUGAAUGCCUGUCCGACCCAUUUUUCUCGUAGCUGCGC------CGGUGG--------UCCAAA---------------CGAUGCGCCCA----------CGCGCCUGACGCGCAGCACG---ACG--GUUA-AAGCCGAGCCGCUCGCCCCUGUU--CGGGGGAGCGGCUUUUUUU

我想提取第一个标识符并将其存储在文件名的新文件中: 所以示例输出

RF02883 AM747720.1/2136330-2136461
NF0023  BX57195.1/1703315-1703186

到目前为止我尝试过的代码:

 awk '                             
    /!#=/{                             
      close(file)                     
      file=count=""                  
    }
    (/!#=/ || !NF) && !file{  

}input.txt

【问题讨论】:

标签: shell unix awk sed grep


【解决方案1】:

请您尝试以下操作。使用 GNU awk 最新版本中的 nextfile,一旦找到匹配的行就会跳过文件读取,这也将进一步节省我们的时间。

awk '!/^#/ && NF{print FILENAME,$1;nextfile}' *.txt > Output_file

如果您的 awk 中没有 nextfile,请尝试关注。

awk 'FNR==1{found=""} !/^#/ && NF && !found{print FILENAME,$1;found=1}' *.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-10
    • 2020-02-06
    • 2022-01-08
    • 2011-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    相关资源
    最近更新 更多