我正在对大量日志文件进行一些数据收集,并且需要计算唯一字符串的出现次数。一般来说,完成此操作的方法是使用如下命令:
zcat <file> | grep -o <filter> | sort | uniq -c | sort -n
Run Code Online (Sandbox Code Playgroud)
我想要做的不是付出 grep 之后的那种性能损失。这可以在不离开 bash 的情况下完成吗?
您可以使用 awk 来计算唯一性并避免sort:
zgrep -o <filter> <file> |
awk '{count[$0]++} END{for (i in count) print count[i], i}'
Run Code Online (Sandbox Code Playgroud)
另请注意,您可以避免zcat并直接致电zgrep。