据我所知,grep -c string可以用来计算给定字符串的出现次数.我想要做的是计算只有部分字符串已知或保持不变时唯一出现的次数.
例如,如果我有一个文件(在这种情况下是一个日志),其中有几行包含一个常量字符串和一个重复变量,如下所示:
string=value1
string=value1
string=value1
string=value2
string=value3
string=value2
Run Code Online (Sandbox Code Playgroud)
我希望能够识别每个唯一集合的数量,其输出类似于以下内容:(理想情况下使用单个grep/awk字符串)
value1 = 3 occurrences
value2 = 2 occurrences
value3 = 1 occurrences
Run Code Online (Sandbox Code Playgroud)
有没有人有使用grep或awk可能有效的解决方案?提前致谢!
Sim*_*ton 18
这完美地运作...感谢大家的意见!
grep -oP "wwn=[^,]*" path/to/file | sort | uniq -c
通常,如果要grep并跟踪结果,最好使用awk它,因为它以非常简单的语法以清晰的方式执行此类操作。
因此,对于您给定的文件,我将使用:
$ awk -F= '/string=/ {count[$2]++} END {for (i in count) print i, count[i]}' file
value1 3
value2 2
value3 1
Run Code Online (Sandbox Code Playgroud)
这是在做什么
-F==,以便我们可以计算它的左右部分。/string=/ {count[$2]++}count[]来跟踪第二个字段到目前为止的出现时间。END {for (i in count) print i, count[i]}