当grep文件明显存在时,grep不会准确计算字符数

时间:2015-09-15 05:40:18

标签: regex bash shell sed grep

我试图计算次数'('出现在文件中。我收到一个号码,但它从来都不准确。

为什么赢得grep准确计算出这个角色的出现次数。它必须是多行的并且每次出现。

我想我的正则表达式已关闭,但它很简单。

log.txt的:

(eRxîó¬Pä^oË'AqŠêêÏ-04ây9Í&ñ­ÖbèaïÄ®h0FºßôÊ$&Ð>0dÏ“ ²ˆde^áä­ÖÚƒíZÝ*ö¨tM
variable        1
paren )
(¼uC¼óµr\=Œ"J§ò<ƒu³ÓùËP
<åÐ#ô{ô
½ÊªÆÏglTµ¥>¦³éùoÏWÛz·ób(ÈIH|TT]
variable        0
paren )

输出:

$ grep -o "(" log.txt | wc -l

1

修改

我有一个奇怪的编码混合,所以我转储它然后计算十六进制值。

hexdump -C hex.txt | grep "28" | wc -l

3 个答案:

答案 0 :(得分:1)

如果您在多字节语言环境中解释单字节编码,则可能会遇到编码问题。这是一种删除除(之外的所有内容(在单字节语言环境中),然后计算剩余字符的方法:

LC_ALL=C <log.txt tr -c -d '(' | wc -c

答案 1 :(得分:0)

转储未知编码并计算十六进制值。

hexdump -C hex.txt | grep "28" | wc -l

答案 2 :(得分:0)

使用sed(而不是用wc计数,因为只有在sed中它才有点重)

sed -e '1h;1!h;$!d' -e 'x;s/[^(]//g' yourfile | wc -c

使用awk

awk -F '(' '{ Total += NF - 1 } END { print Total }' YourFile