使用awk获取最小-最大列值
给定一个包含以下数据的文件:使用awk获取最小-最大列值,awk,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=="" |
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
awk'min==”||$4
如何让它排除$4包含文本的任何行?我想这需要正则表达式,但仔细阅读正则表达式手册,我不知道该怎么做。您可以在第四个字段上使用正则表达式比较
$4~/[0-9]+/
测试
$ awk '$4~/[0-9]+/ && $4 < min {min=$4} END{print min}' input
-1.29
$awk'$4~/[0-9]+/&&4
注意这是代码的简化版本。您可以安全地跳过示例代码中的一些语句,就像在测试代码中一样
仔细阅读regex手册
,您找不到如何只匹配数字?我在谷歌搜索了awk regex
,第一个结果清楚地解释了如何做。要排除是否有文本,最好使用$4~/^[^[:alpha:]+$/