【发布时间】:2018-09-05 13:49:36
【问题描述】:
我正在尝试使用 awk 执行以下操作:
输入文件:
6:28866209 NA NA NA 8.51368e-06 Y
6:28856689 1 0.007828 1 1.50247e-06 X
6:28856740 2 0.007828 1 1.50247e-06 Y
6:28856889 3 7.51E-08 3 1.50247e-06 X
我想:
- 为第 6 列中的每个独立值获取第 5 列的最小值和最大值
- 在文件末尾为每列 5 打印文件中的最小最大值
该文件可以有不同的 N 列,但都至少有 1-8 列,这在我的每个文件中都是相同的。
输出:
6:28866209 NA NA NA 8.51368e-06 Y 8.51368e-06 1.50247e-06
6:28856689 1 0.007828 1 1.50247e-06 X 1.50247e-061.50247e-06
6:28856740 2 0.007828 1 1.50247e-06 Y 8.51368e-06 1.50247e-06
6:28856889 3 7.51E-08 3 1.50247e-06 X 1.50247e-06 1.50247e-06
我已尝试使用以下 awk 命令进行此操作,但我只取回第 6 列中的第一个值...
awk 'BEGIN{OFS="\t";FS="\t"}{if (a[$6] == "") a[$6]=$5; if (a[$6] > $5) {a[$6]=$5}} {if (b[$6] == "") b[$6]=$5; if (b[$6] < $5) {b[$6]=$5}} END {if (i=$6) print $0,i,a[i],b[i]}' FILE
【问题讨论】:
-
在
END部分,循环遍历所有数组元素,而不是只选择一个。