如何在一行包含特定模式时打印,如果不包含该模式则不打印

如何在一行包含特定模式时打印,如果不包含该模式则不打印
">16RI1_0 M01230:42:000000000-AWMRD:1:1101:15012:1778 1:N:0:0 
TATCCGGATTTACTGGGTGTAAAGGGAGCGTAGGCGGCCATGCAAGTCAGAAGTGAAAAC
">16RA2_1 M01230:42:000000000-AWMRD:1:1101:15923:1780 1:N:0:0 
TTGTCCGGATTTATTGGGCGTAAAGCGAGCGCAGGCGGTTTCTTAAGTCTGATGTGAAAGC
">0VC3_7 M01230:42:000000000-AWMRD:1:1101:15805:1805 1:N:0:0 TCATGAAGAACTCCGATCGCGAAGGCAAGTGTCCGGGGTGCAACTGACGCTGAGGCTCGAA
">11VI2_15 M01230:42:000000000-AWMRD:1:1101:17657:1817 1:N:0:0 
GCGGCTTACTGGACTGTAACTGACGTTGAGGCTCGAAAGCGTGGGGAGCAAACAGGGCTC

您好,我有一个包含此类信息的文件。我想打印所有以“>”符号开头的行和下一行,但有一个条件,以“>”符号开头的行应包含字母 V。请帮助我。

答案1

我想打印以“>”符号开头的所有行和下一行,但有一个条件以“>”符号开头的行应包含字母 V。

grep似乎有效:

grep -A 1 '^">.*V'

例子:

grep -A 1 '^">.*V' file 
">0VC3_7 M01230:42:000000000-AWMRD:1:1101:15805:1805 1:N:0:0 TCATGAAGAACTCCGATCGCGAAGGCAAGTGTCCGGGGTGCAACTGACGCTGAGGCTCGAA
">11VI2_15 M01230:42:000000000-AWMRD:1:1101:17657:1817 1:N:0:0 
GCGGCTTACTGGACTGTAACTGACGTTGAGGCTCGAAAGCGTGGGGAGCAAACAGGGCTC

答案2

使用 GNU sed(Linux 系统上的标准),您可以从 fasta 文件中获取标题行(包含任意位置V)和序列的第一行,如下所示:

sed -n '/^>.*V/,+1p' sequence.fa

这是假设 fasta 文件格式正确。

关闭-n默认输出并将/^>.*V/,+1p打印任何带有 a 的标题行V以及紧随其后的行。

答案3

你说:

我想打印以“>”符号开头的所有行和下一行,但有一个条件以“>”符号开头的行应包含字母 V

这对 awk 来说是一份很好的工作:

$ awk '/^">.*V/{print $0;getline line; print line}' input.txt                                                            
">0VC3_7 M01230:42:000000000-AWMRD:1:1101:15805:1805 1:N:0:0 
TCATGAAGAACTCCGATCGCGAAGGCAAGTGTCCGGGGTGCAACTGACGCTGAGGCTCGAA
">11VI2_15 M01230:42:000000000-AWMRD:1:1101:17657:1817 1:N:0:0 
GCGGCTTACTGGACTGTAACTGACGTTGAGGCTCGAAAGCGTGGGGAGCAAACAGGGCTC

相关内容