假设我有这些行要输入awk
:
dolly-cabinet-93-red
murfy-swan-96-white
chizzle-rock-115-green
如何选择-
第三列最大(数值)的线并输出该线(最好使用awk
,但不限于)?
不知何故,我认为 96 的解决方案是最大的。
答案1
我猜你正在做某种排序,并且这种排序是按字典顺序而不是数字顺序完成的,在这种情况下96
将在之后排序115
(因为9
在之后1
)。
awk -F '-' '$3 > max { max = $3; line = $0 } END { print line }' file
对于给定的数据,这将输出
chizzle-rock-115-green
该代码将第三个-
分隔字段与当前找到的最大数字 ( max
) 进行比较。如果字段的编号较大,max
则使用该编号进行更新,并将当前输入行保存在line
.最后,line
打印 的内容。
这比排序稍微快一些,因为它是线性操作(排序最多是O(n*log(n))
),但除非有大量数据,否则您不会注意到很大的差异。
答案2
sort
使用+ 的替代方法head
:
sort -t'-' -k3nr file | head -1
输出:
chizzle-rock-115-green