我有几个看起来像这样的文件。
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
答案 0 :(得分:3)
能否请您尝试以下。使用最新版本的GNU nextfile
中的awk
,一旦找到匹配的行将跳过文件读取,这也将进一步节省我们的时间。
awk '!/^#/ && NF{print FILENAME,$1;nextfile}' *.txt > Output_file
如果您的awk中没有nextfile
,请尝试关注。
awk 'FNR==1{found=""} !/^#/ && NF && !found{print FILENAME,$1;found=1}' *.txt