使用bash统计文件中带有空格的模式的出现次数

时间:2019-01-31 21:32:36

标签: bash count grep

作为标题建议,我想计算涉及空格或制表符的模式的出现次数。我尝试过:

grep -o ' 2L ' file | wc -l

grep -o '\s2L\s' file | wc -l

但它打印的数字小于(仅1)

grep -o 2L file | wc -l

,它显示14567。模式[space]2L[space]在文件中频繁出现。 你的灵魂?

在这里,我显示cat file输出的第一行: 2L^Isplign_na_dbEST_ncbi^Imatch^I16299682^I16299851^I.^I-^I.^IID=Splign:0568174_na_dbEST_ncbi;Name=RP003180722.5prime-GH911198-na_dbEST_ncbi_20090309-splign;program=splign;programversion=1.0;sourcename=na_dbEST_ncbi;target_type=EST;Target=GH911198 1 171 +$ 2L^Isplign_na_dbEST_ncbi^Imatch_part^I16299682^I16299851^I100^I-^I.^IName=:ncbi_2178736;Parent=Splign:0568071_na_dbEST_ncbi;target_type=EST;Target=GH773194 1 170 +$ 2L^Isplign_na_dbEST_ncbi^Imatch_part^I16299682^I16299851^I100^I-^I.^IName=:ncbi_2178839;Parent=Splign:0568174_na_dbEST_ncbi;target_type=EST;Target=GH911198 1 171 +$ 2L^Isplign_na_dbEST_ncbi^Imatch_part^I16299682^I16299851^I99.41^I-^I.^IName=:ncbi_2178729;Parent=Splign:0568064_na_dbEST_ncbi;target_type=EST;Target=GH807525 1 170 +$ 2L^Isplign_na_dbEST_ncbi^Imatch_part^I16299682^I16299851^I99.41^I-^I.^IName=:ncbi_2178751;Parent=Splign:0568086_na_dbEST_ncbi;target_type=EST;Target=GH890956 1 178 +$ 2L^Isplign_na_dbEST_ncbi^Imatch^I16299682^I16299850^I.^I-^I.^IID=Splign:0568097_na_dbEST_ncbi;Name=RP003087707.5prime-GH857137-na_dbEST_ncbi_20090309-splign;program=splign;programversion=1.0;sourcename=na_dbEST_ncbi;target_type=EST;Target=GH857137 4 172 +$

less输出的一部分:

##gff-version 3
##sequence-region 2L -204333 23011544
##species  http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7227
##genome-build FlyBase r5.21
2L      FlyBase chromosome_band -204333 1326937 .       +       .       ID=band-21_chromosome_band;Name=band-21
2L      FlyBase chromosome_band -204333 22221   .       +       .       ID=band-21A_chromosome_band;Name=band-21A
2L      FlyBase chromosome_band -204333 -153714 .       +       .       ID=band-21A1_chromosome_band;Name=band-21A1
2L      FlyBase breakpoint      -204333 -204333 .       .       .       ID=Df(2L)ED50001:bk1_breakpoint;Name=Df(2L)ED500

1 个答案:

答案 0 :(得分:0)

看起来像在行首有2L模式,在行之后有一个制表符。

您可以使用此简单的awk来获取计数:

awk '$1 == "2L"{++c} END{print c}' file

使用grep将是:

grep -c '^2L[[:blank:]]' file