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)
这并不完全是您描述的输出,但如果这确实是一个硬要求,则可以将其调整为该格式,但是:
awk -F'[ #]' '{print $3}' input | sort -n | uniq -c
Run Code Online (Sandbox Code Playgroud)
awk 命令将提取您之前的号码#
,然后将其传递给sort
/ uniq
。 uniq -c
将提供每个值的计数。
要获取输出格式:
awk -F'[ #]' '{print $3}' input | sort -n | uniq -c | awk '{print $2"#",$1}'
Run Code Online (Sandbox Code Playgroud)