linux - bash 显示每个变量计数的所有行

标签 linux bash

我不是 bash 高手,我有一个包含如下行的文件:

timestamp1 value1 value2 value3 username host

我想打印所有 values3 和 values2,每次主机相同时它们都会不同,假设 X 次。我知道如何对每个主机进行 grep 和对列进行 awk,但是我不知道如何设置变量的计数?

例如 - 如果主机在文件中出现 5 次,我想打印这 5 行。但这里的问题是我不知道主机所以我需要在变量中指定它并以某种方式计算它?

最佳答案

单行解决方案

假设您的文件名为 lst 这是单行代码:

grep -Ff <(awk '{print $6}' lst | sort | uniq -c | awk '$1 == 5 {print $2}') lst

会发生什么?

  • 从文件中提取所有主机名
  • 对于每个主机名,计算出现的次数
  • 只打印恰好出现 5 次的主机名
  • Grep 过滤掉主机名的文件

注意:

  • 主机名不得出现在其他字段中(会导致误报)。
  • 输出按原始文件排序(可能未根据主机名排序)。但是,您可以添加 |排序到命令的末尾。

关于linux - bash 显示每个变量计数的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42839679/

相关文章:

Linux命令做通配符匹配

java - 设置 LD_LIBRARY_PATH =`pwd` 的 Shell 脚本在 Java 中不起作用

linux - 获取自 Linux 上的 Epoch、Bash 以来的当前时间(以秒为单位)

python subprocess.call() 找不到 Windows Bash.exe

php - shell_exec() 不返回 MySQL 结果格式

Bash 命令值赋值

c - GCC 是否检查数组边界?

python - Grok DistributionNotFound : grokcore. 启动

python - 如何识别频繁启动进程的来源

Linux/C : how to trace the accesses on a number of variables