我有一个900MB的大文件,整个文件只有一行。标签之间没有换行符。我需要计算该文件中特定标记的出现次数。
我试过
grep -o '<start tag>' filename | wc -l
我收到grep: line too long
错误。
我怎样才能解决这个问题?
答案 0 :(得分:0)
这里有点像黑客:
perl -ne 'BEGIN { $/ = ">"; $c = 0 } $c++ if /<start tag>/; END { print "$c\n" }' filename
这个想法是绕过&#34;线&#34;由>
而不是\n
(换行符)终止的。这应该避免&#34;行太长&#34;错误。
答案 1 :(得分:0)
只需使用awk:
awk -F'<start tag>' '{print NF-1}' file
如果失败,您可以使用GNU awk(对于多字符RS)执行此操作:
awk -v RS='<start tag>' 'END{print NR-1}' file