bash - 使用 grep 计算出现的总数并输出找到的行
问题描述
我grep
在 Bash 循环中使用工具来计算在总体中找到的唯一值的数量,但我也想输出找到的行。
目前我在循环中运行以下命令:
n=$(grep -o -i ${uniqueVal} ${population} | wc -l)
total+=n
但是,这仅输出发现它不输出匹配行的出现次数。有没有办法在仅将匹配项输出到屏幕时计算出现次数?
唯一值
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
人口
192.168.1.4
192.168.1.1
192.168.1.88
192.168.1.77
192.168.1.72
192.168.1.66
192.168.1.55
192.168.1.32
192.168.1.22
192.168.1.24
192.168.1.98
192.168.1.99
输出Total Unique Found: 2
我希望 Desired Output 显示找到的行population
,然后显示找到的总数。
Found: 192.168.1.4
Found: 192.168.1.1
Total Unique Found: 2
解决方案
添加 -ne 标志以获取行号,以及tee /dev/stderr
打印结果输出
grep -o -i ${uniqueVal} ${population} -ne | tee /dev/stderr | wc -l
如果要打印带有${population}
内部${population}
文件的行以及找到的行数,那么我会使用awk
,您可以使用以下内容:
awk '/${population}/' ${uniqueVal} | tee /dev/stderr | wc -l
推荐阅读
- r - 安装 R 包 pdftools 困难
- html - 文本渐变在 Edge 和 Safari 中不起作用
- jquery - 当检查表1中的广播按钮的特定值时,表2中的行更改等级
- php - 无法在 php 程序中使用 chart.js 和 jquery 显示条形图
- c# - 如何在WPF中将来自url的svg显示为图像源
- python - 从字典中检索值,这个字典有多个相同值的键,不返回但它应该是 'e'
- laravel - Laravel:当 S3 通过 CDN 提供服务时,我需要 memcached 吗?
- javascript - Laravel 419 错误使用 Uppy 开源,如何将 csrf 令牌添加到 Uppy?
- kubernetes - 一旦最近的作业通过,如何清理失败的 CronJob 生成的作业
- reactjs - Next.js SSR 也渲染页面道具