为什么我的grep命令输出--&引用;在一些字里行间?
我这里有一个类似于测试文件的fasta文件:为什么我的grep命令输出--&引用;在一些字里行间?,grep,fasta,Grep,Fasta,我这里有一个类似于测试文件的fasta文件: >HWI-D00196:168:C66U5ANXX:3:1106:16404:19663 1:N:0:GCCAAT CCTAGCACCATGATTTAATGTTTCTTTTGTACGTTCTTTCTTTGGAAACTGCACTTGTTGCAACCTTGCAAGCCATATAAACACATTTCAGATATAAGGCT >HWI-D00196:168:C66U5ANXX:3:1106:16404:19663 2:N:0:GCCAAT AAA
>HWI-D00196:168:C66U5ANXX:3:1106:16404:19663 1:N:0:GCCAAT
CCTAGCACCATGATTTAATGTTTCTTTTGTACGTTCTTTCTTTGGAAACTGCACTTGTTGCAACCTTGCAAGCCATATAAACACATTTCAGATATAAGGCT
>HWI-D00196:168:C66U5ANXX:3:1106:16404:19663 2:N:0:GCCAAT
AAAACATAAATTTGAGCTTGACAAAAATTAAAAATGAGCCCAGCCTTATATCTGAAATGTGTTTATATGGCTTGCAAGGTTGCAACAAGTGCAGTTTCCAA
>HWI-D00196:168:C66U5ANXX:4:1304:10466:100132 1:N:0:GCCAAT
ATATTTGAATTATCAGAAATAAACACAAAGAAAACCTAGAACAGATAATTTCTTCCACATTATTGATCAGATACAGATTTCAAGGGTACCGTTGTGAATTG
>HWI-D00196:168:C66U5ANXX:4:1304:10466:100132 2:N:0:GCCAAT
AAACGATTGATAGATCTATTTGCATTATAAAAACATTAAAAAAACAAAATACTGATTAAATGTCGTCTTTCTATTCCACAATTTTATAGATCTCACTGTAT
>HWI-D00196:168:C66U5ANXX:4:1307:12056:64030 1:N:0:GCCAAT
CTTACTTTGCCTCTCTCAGCCAATGTCTCCTGAGTCTAATTTTTTGGAGGCTAAGCTATGAGCTAATGATGGGTTCCATTTGGGGCCAATGCTTCAGCCTG
>HWI-D00196:168:C66U5ANXX:4:1307:12056:64030 2:N:0:GCCAAT
CTATTAGTTCTTATCTTTGCCTGCAAATATAAGACTAGCGCTTGAGTAGCTGACAGAGACAAAGTAAGCTGGAGTGTTTATCACCTGGTCACTCCAATTGT
当我键入一个简单的grep命令时,如:
grep -B1 "CTT" test.fasta
我得到一个非常奇怪的输出,其中“-”有时被放置在grep hit上方的换行符上,如下所示:
>HWI-D00196:168:C66U5ANXX:4:1304:10466:100132 2:N:0:GCCAAT
AAACGATTGATAGATCTATTTGCATTATAAAAACATTAAAAAAACAAAATACTGATTAAATGTCGTCTTTCTATTCCACAATTTTATAGATCTCACTGTAT
--
>HWI-D00196:168:C66U5ANXX:4:1307:12056:64030 2:N:0:GCCAAT
CTATTAGTTCTTATCTTTGCCTGCAAATATAAGACTAGCGCTTGAGTAGCTGACAGAGACAAAGTAAGCTGGAGTGTTTATCACCTGGTCACTCCAATTGT
我不明白为什么一些fasta条目有这个,而其他条目没有。当我移除-B1时,我没有遇到这个问题。我可以用
grep-v”--“
语句从我的文件中删除这些行,但我真的很想了解这里发生了什么 您使用-B1
选项请求一行前导上下文。这意味着grep将同时显示匹配的行和它前面的行。每个匹配项将由--
单独一行分隔,如下所示:
$ man grep | grep -B1 context
-A num, --after-context=num
Print num lines of trailing context after each match. See also
--
-B num, --before-context=num
Print num lines of leading context before each match. See also
--
-C[num, --context=num]
Print num lines of leading and trailing context surrounding each
--
--context[=num]
Print num lines of leading and trailing context. The default is
在每个匹配之间看不到--
的原因是上下文仅显示在连续匹配序列的上方。因此,请参见以下示例:
seq 13 | grep -B1 1
1
--
9
10
11
12
13
seq命令生成1到13之间的所有数字。只有第一行和从10开始的行包含1,因此您可以在其自己的组中看到1,然后是
--
,然后是单行上下文,然后是连续匹配行组。GREP\u COLORS
GREP手册页的部分说:
指定用于高亮显示输出的各个>部分的颜色和其他属性。它的值是以冒号分隔的列表
默认为
ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36,带rv和
忽略了ne布尔函数功能(即,false)
及
se=36SGR子串,用于插入 选定行字段(:),上下文行字段之间,(-)和 当上下文为非零时,相邻行组之间 指定(--)。默认情况下,屏幕上方的青色文本前景 终端的默认背景 考虑sample.txt文件:
$cat sample.txt
ABBB
AAB
AAB
S
S
S
AABB
ABAA
BAA
CCC
$grep -B2 'AAB' sample.txt
ABBB
AAB
AAB
--
S
S
AABB
这里
--
是grep
告诉您--
之前的AAB
和--
之后的S
不是实际文件中的相邻行。谢谢@chthonicdaemon,我感到困惑的是,为什么只有一些匹配项用--
分隔,而其他匹配项则不是--
只有在存在非连续匹配项时才会放入。我将更新我的答案。冒着陈述显而易见的风险,您可以使用eggrep-B1“CTT”test.fasta | grep-v^--
删除匹配间分隔符。