我的文本文件示例(CSV,逗号分隔)中的每一行如下所示:
2016-01-10,23:56:07,10,71,47可以看到,字段3、4和5是数值值。
对于每一行,我只想得到字段3和4的最大值。类似于:
awk -F ',' '{print max($3,$4)}'(这可能不是一个真正的AWK语法,但它是我能想到的最接近的语法)。
因此,对于上面的一行,得到的数字是'71‘。
有更多行的示例:
2016-01-10,23:53:07,6,99,41
2016-01-10,23:54:07,10,88,44
2016-01-10,23:55:07,31,71,46
2016-01-10,23:56:07,71,10,47结果:
99
88
71
71如何在Linux shell上做到这一点?
我建议了AWK,但其他解决方案都可以。
发布于 2016-01-11 22:05:23
这一条衬垫可能会有帮助:
awk -F, '{print ($3>$4?$3:$4)}' file发布于 2016-01-11 22:37:48
如果您需要对格式化进行更多的控制,或者引用了cvs字段,Python是一个不错的选择:
$ python -c "
> import csv, fileinput
> for line in csv.reader(fileinput.input()):
> print max(map(float, line[2:4]))
> " /tmp/file.csv
99.0
88.0
71.0
71.0https://stackoverflow.com/questions/34731937
复制相似问题