Grep 计算大文件中字符串的出现次数

Grep 计算大文件中字符串的出现次数,grep,Grep,我有一个900MB的xml文件,整个文件只有一行。标记之间没有换行符。我需要计算该文件中某个特定标记的出现次数 我试过了 grep -o '<start tag>' filename | wc -l 我得到一个grep:行太长的错误 我怎样才能避开这个问题呢?这里有一点小技巧: perl -ne 'BEGIN { $/ = ">"; $c = 0 } $c++ if /<start tag>/; END { print "$c\n" }' filename 其思

我有一个900MB的xml文件,整个文件只有一行。标记之间没有换行符。我需要计算该文件中某个特定标记的出现次数

我试过了

grep -o '<start tag>' filename | wc -l
我得到一个grep:行太长的错误


我怎样才能避开这个问题呢?

这里有一点小技巧:

perl -ne 'BEGIN { $/ = ">"; $c = 0 } $c++ if /<start tag>/; END { print "$c\n" }' filename
其思想是在以>结尾的行上循环,而不是\n换行。这样可以避免行过长的错误。

只需使用awk:

awk -F'<start tag>' '{print NF-1}' file
如果失败,您可以使用GNU awk为多字符RS执行此操作:

awk -v RS='<start tag>' 'END{print NR-1}' file
已尝试sed的//\n/g'test.log | grep-c。但是,当我使用grep时,它同样适用于小文件,但在我的情况下,grep给出的值太长error@md1980在这种情况下,是grep还是sed给出了最后一条注释的错误。@Kusalananda不,实际上,BEGIN块在解析时首先运行。