使用sed或grep在一行中计算正则表达式模式匹配?

问题描述

| 我想计算一行上(或所有行的匹配数,因为总会只有一行)。 我想不仅仅算每行一场比赛
echo \"123 123 123\" | grep -c -E \"123\" # Result: 1
更好的例子:
echo \"1 1 2 2 2 5\" | grep -c -E \'([^ ])( \\1){1}\' # Result: 1,expected: 2 or 3
    

解决方法

        您可以使用
grep -o
,然后通过
wc -l
进行管道传输:
$ echo \"123 123 123\" | grep -o 123 | wc -l
3
    ,        也许您应该先将空格转换为换行符:
$ echo \"1 1 2 2 2 5\" | tr \' \' $\'\\n\' | grep -c 2
3
    ,        也许在下面:
echo \"123 123 123\" | sed \"s/123 /123\\n/g\" | wc -l
(也许很丑,但是我的bash fu并不是很好)     ,        为什么不使用awk? 你可以用
awk \'{print gsub(your_regex,\"&\")}\'
在每行上打印匹配数,或者
awk \'{c+=gsub(your_regex,\"&\")}END{print c}\'
打印匹配总数。请注意,相对速度可能会有所不同,具体取决于使用哪种awk实现以及给出的输入。     ,        这可能对您有用:
sed -n -e \':a\' -e \'s/123//p\' -e \'ta\' file | sed -n \'$=\'
GNU sed可以写成:
sed -n \':;s/123//p;t\' file | sed -n \'$=\'
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...