获取大型文本文件中特定行位置的唯一值数

时间:2012-11-15 20:45:25

标签: perl awk grep

所有

我有一个包含条目的大型服务器日志:  没有从模块中找到

在引号之后立即跟随模块的位置。该文件长度超过4,800行,每个模块可能出现超过100次。所以,我想做的是类似于wc -l,但是只显示服务器日志的模块名称部分中的唯一值的数量。有什么想法吗?

4 个答案:

答案 0 :(得分:2)

grep -oP '(?<=not found from Module ")[^"]+(?=")' logfile | sort -u | wc -l

答案 1 :(得分:2)

grep 'entry: not found from Module' logfile | sort -u | wc -l

答案 2 :(得分:0)

awk '{count[$NF]++} END{ for (mod in count) print mod, count[mod] }' file

可能接近你想要的但是没有一些样本输入和预期输出就很难猜到。

答案 3 :(得分:0)

perl -nlwe '$a{$_}++ }{ print "$_ : $a{$_}" for keys %a' log.txt

为每一行创建一个哈希键,然后在最后打印键。