按正则表达式分组和计数

pee*_*pee 5 grep bash awk text-processing

我在一个文件中有几十个值,例如

(1608926678.237962) vcan0 123#0000000158
(1608926678.251533) vcan0 456#0000000186
Run Code Online (Sandbox Code Playgroud)

我想根据哈希符号之前的数字计算每个有多少(也可以包括它)

我试图跟随但一直为零

 grep -o '\b\d+#\b' ./file.log | wc -l
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?对于上面的例子,我想要:

123# 1
456# 1
Run Code Online (Sandbox Code Playgroud)

jes*_*e_b 4

这并不完全是您描述的输出,但如果这确实是一个硬要求,则可以将其调整为该格式,但是:

awk -F'[ #]' '{print $3}' input | sort -n | uniq -c
Run Code Online (Sandbox Code Playgroud)

awk 命令将提取您之前的号码#,然后将其传递给sort/ uniquniq -c将提供每个值的计数。


要获取输出格式:

awk -F'[ #]' '{print $3}' input | sort -n | uniq -c | awk '{print $2"#",$1}'
Run Code Online (Sandbox Code Playgroud)