我正试图了解如何使用egrep
计算文件中某些内容的出现次数。
如果我有这样的文件,名为myfile
:
commas and stuff
more things
然后我可以计算第一个中的o的数量,如:
head myfile | egrep -c "o" myfile
出于某种原因,我无法用管道做到这一点。如果我有一个名为mypipes
的文件:
| my | pipes |
我试过了:
head mypipes | egrep -c "|" mypipes
这给了我一个错误empty sub(expression)
,所以我尝试了以下内容:
head mypipes | egrep -c "\|" mypipes
这给了我一个“1”的值,这显然是错误的。
我该如何正确地做到这一点?一个完整的解释而不是一次性解决方案将是惊人的。感谢。
答案 0 :(得分:1)
从手册:
-c, --count
Suppress normal output;
instead print a count of matching lines for each input file.
你计算的是行,而不是字符。
egrep -o '\|' | wc -l
注意:您要么输入输入(例如:管道),要么指定要搜索的文件。为什么要同时执行这两项操作?
答案 1 :(得分:0)
在您构建的示例中,无需将数据传输到egrep
,因为您已经告诉它直接从文件中读取数据。
如果您没有提供文件名,egrep
将从STDIN读取:
head mypipes | egrep -c "\|"
至于你的其他问题......
是吗?这给了我一个" 1"的值,这显然是错误的。
egrep -c
计算匹配的行数,在本例中为1。
如果您想计算出现次数,忽略行,这可能会有所帮助:Count total number of occurrences using grep