使用awk获取min-max列值

时间:2015-02-25 04:06:23

标签: awk

给定一个包含

等数据的文件
2015-12-24 22:02 12   9.87 feet  High Tide
2015-12-25 03:33 12  -0.38 feet  Low Tide
2015-12-25 06:11 12   Full Moon
2015-12-25 10:16 12  11.01 feet  High Tide
2015-12-25 16:09 12  -1.29 feet  Low Tide

awk命令将在第4列中返回最小值:

awk 'min=="" || $4 < min {min=$4} END{ print min}' FS="  " 12--December.txt

如何让它排除$ 4包含文本的任何行?我想这需要正则表达式,但仔细阅读正则表达式手册我不知道如何做到这一点。

1 个答案:

答案 0 :(得分:2)

您可以在第四个字段上使用正则表达式比较

$4~/[0-9]+/

<强>测试

$ awk '$4~/[0-9]+/ && $4 < min {min=$4} END{print min}' input
-1.29

注意 这是代码的最小化版本。您可以安全地跳过示例代码中的一些语句,如测试代码