Scy*_*aud 0 scripting awk text-processing sort
我需要在 bash 脚本中处理如下文件:
输入.txt:
host1 53
host1 123
host2 0
host1 222
host3 1
host1 85
host1 25
host1 13
host3 8
host2 90
Run Code Online (Sandbox Code Playgroud)
根据第 2 列中的最大值,我只需要为每个主机输入一行结果:
输出.txt:
host1 222
host2 90
host3 8
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
使用 GNUsort
或兼容:
<input.txt sort -k2rn | sort -sbuk1,1 >output.txt
Run Code Online (Sandbox Code Playgroud)
GNU 最短的一个datamash
:
datamash -sW -g1 max 2 <file
Run Code Online (Sandbox Code Playgroud)
-s
- 在分组之前对输入进行排序-W
- 使用空格(一个或多个空格和/或制表符)作为字段分隔符-g 1
- 通过第一个字段分组max 2
- 数字运算来获取每组第二个字段的最大值输出:
host1 222
host2 90
host3 8
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1213 次 |
最近记录: |