Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Bash-计算一个模式并打印包含该模式的行_Regex_Bash_Pattern Matching - Fatal编程技术网

Regex Bash-计算一个模式并打印包含该模式的行

Regex Bash-计算一个模式并打印包含该模式的行,regex,bash,pattern-matching,Regex,Bash,Pattern Matching,各位!!当我阅读这个讨论时,我想知道是否可以在计数值旁边添加包含模式的行 不知何故,我无法对讨论添加任何评论,因此我发布了一个新问题。有人能给我点灯吗 这里一定有一些误解,所以我举了一个例子。 比如说,我有一个如下的DNA序列,想知道每一行中有多少个CG ACAAAGAACTCAAGAAGTTGGACCCCAGAGAACCAAATAACCCTATTAAA AATTCGGAACAGAGATAAACAAAGAATTCTCAACTGAGGAAACTTGAATG GGATTTTTTTTTAAGATTC

各位!!当我阅读这个讨论时,我想知道是否可以在计数值旁边添加包含模式的行

不知何故,我无法对讨论添加任何评论,因此我发布了一个新问题。有人能给我点灯吗


这里一定有一些误解,所以我举了一个例子。 比如说,我有一个如下的DNA序列,想知道每一行中有多少个CG

ACAAAGAACTCAAGAAGTTGGACCCCAGAGAACCAAATAACCCTATTAAA
AATTCGGAACAGAGATAAACAAAGAATTCTCAACTGAGGAAACTTGAATG
GGATTTTTTTTTAAGATTCACTTATTTTTATTTTCTGCATGAGTGTTTGC
CTCGATGTATGTACATATACGACATGTGTACGTGGTGCGCAAGTAAGCAG
另外,我想打印每一行(不是图案)以及图案计数

0 ACAAAGAACTCAAGAAGTTGGACCCCAGAGAACCAAATAACCCTATTAAA
1 AATTCGGAACAGAGATAAACAAAGAATTCTCAACTGAGGAAACTTGAATG
0 GGATTTTTTTTTAAGATTCACTTATTTTTATTTTCTGCATGAGTGTTTGC
4 CTCGATGTATGTACATATACGACATGTGTACGTGGTGCGCAAGTAAGCAG
我希望上面的例子有助于更好地理解这个问题

谢谢大家!

您可以执行以下操作:

printf 'pattern' | tee >(sed 's/$/ : /') | grep -cf - input.txt
借助于
tee
和流程替换

示例:

% cat file.txt 
foobar
spamegg
foo

% printf 'foo' | tee >(sed 's/$/ : /') | grep -cf - file.txt 
foo : 2

我刚刚用EXCEL找到了一个非常简单而优雅的解决方案。 公式如下所示

=(LEN(B2)-LEN(SUBSTITUTE(B2,"CG","")))/2
这个公式的基本作用是计算单元格中字符串的总长度和删除模式后的长度(本例中为“CG”),然后减去它们。由于每个“CG”都被空格替换,因此替换后缺少2个字符串,您可以通过将其除以模式的长度(在本例中为2)来获得模式的编号

例如,以下序列包含50个字符串和13个CG

CAGTGCACACAACACATGTACGCGCGCGCGCGCGCGCGCGCGCGCGTGTG  50
将“CG”替换为空格后,得到24个字符串

CAGTGCACACAACACATGTATGTG  24
要计算“CG”事件

(50-24)/2 = 13
如果您要查找“CAG”,请输入“CAG”而不是“CG”,然后除以3。 这是多么简单啊

您可以在以下链接中看到原始帖子

英语不是我的主要语言,所以请理解我写作中的错误


人是天才

发布一个示例以及预期的输出。在这种情况下管理哈希表
(50-24)/2 = 13