awk - 从多个文件中打印第 5 列中具有最小值的行
问题描述
如何从多个文件中打印第 5 列中具有最小值的行以及每行的文件名?
每个文件都有不同的行数 - 20、45、44...
file0
45 7 8 9 9
45 7 5 0 5
44 5 8 9 4
11 5 6 8 8
file1
78 77 8 5 9
78 9 9 7 1
77 8 5 5 5
10 2 3 3 3
88 9 6 5 2
file2
77 8 0 0 2
3 3 6 9 8
期望的结果:
file0
45 7 5 0 5
file1
78 9 9 7 1
file2
77 8 0 0 2
也许在 $5 中找到最小值作为某个变量并打印一行,其中包含 $5 中的这个变量。
解决方案
一种方法(需要 GNU awk):
$ gawk 'BEGINFILE { minline = ""; minval = 1000000 }
$5 < minval { minline=$0; minval=$5 }
ENDFILE { print FILENAME; print minline }' file0 file1 file2
file0
44 5 8 9 4
file1
78 9 9 7 1
file2
77 8 0 0 2
minval
如果 100 万太低,则设置为大于任何文件中第 5 列中的任何数字的某个数字。
推荐阅读
- ios - 根据文本字段上列出的次数播放声音
- android - ContactsContract 按电话号码选择记录
- email - 在 PayPal 中,如何从电子邮件中获取客户 ID 和密码
- c# - 使用 c# 按下 ctrl+alt+del 时阻止蓝屏出现
- php - SQLSTATE[42S02]:在 laravel 5.4 项目中迁移时找不到基表或视图
- android - Crystax 建造谷神星时遇到的错误
- jquery - 如果它有一些 css 则有条件
- java - 单击按钮时将动画设置为反向移动并显示类的形状
- python - 提高大矩阵自举算法的效率
- firefox-addon-webextensions - 如何拦截 WebSocket 数据?