首页 > 解决方案 > 按参数过滤的总数 - bash

问题描述

有没有办法获得按某些参数过滤的总行数?例如,我有一个日志文件,其中包含:

COMPLETED: location: DEN brand: A
COMPLETED: location: LHR brand: A
COMPLETED: location: EWR brand: C

COMPLETED: location: DEN brand: A
COMPLETED: location: LHR brand: B
COMPLETED: location: JFK brand: C

有没有办法编写可以返回每个位置和品牌的总行数的 grep 命令。例如,执行的命令将返回

DEN    A     3
LHR    A     1
LHR    B     1

这必须是动态的,因为位置可能不同。所以我们不能只做类似的事情grep 'location: DEN' | grep 'brand: A' | wc -l >> file.log

任何的意见都将会有帮助。谢谢。

标签: bashshellscripting

解决方案


您也可以使用 Bash 命令执行此操作:

cat input_file | sed '/^$/d' | sort | uniq -c | sed 's/^ \+//' | cut -d' ' -f1,4,6

在这种情况下,输出将如下:

2 DEN A
1 EWR C
1 JFK C
1 LHR A
1 LHR B

推荐阅读