如何结合grep与wc实现唯一计数?sort -u应添加到命令的哪个位置?
命令使用问题解答
一、grep搭配wc实现唯一计数的方法
- 核心逻辑是:先用grep完成你需要的内容筛选,再通过去重工具处理筛选结果,最后交给wc统计行数即可。由于grep本身不具备去重能力,需要搭配
sort -u或先sort再uniq实现去重。 - 示例场景:统计Nginx访问日志中请求了
/api/login接口的独立IP数量:
上面的命令中,grep先筛选出所有包含登录接口请求的日志行,awk提取出每行第一个字段(即请求IP),grep "/api/login" /var/log/nginx/access.log | awk '{print $1}' | sort -u | wc -lsort -u对IP去重后,wc统计最终的唯一IP数量。
二、现有cut命令的修改方案
你现有的命令是提取csv第一列后统计总行数,要实现去重计数,只需要把sort -u插入到cut命令和wc命令之间即可,提取后的第一列会先完成去重再统计行数。
修改后的最终命令如下:
cut -f1 test.csv | sort -u | wc -l
注意:如果你的test.csv是逗号分隔而非默认的制表符分隔,需要给cut加上指定分隔符的参数,修改为:
cut -d',' -f1 test.csv | sort -u | wc -l
内容的提问来源于stack exchange,提问作者marlon
相关产品推荐
相关产品推荐

