使用 awk 做减法

using awk for subtraction

此处类似 post:

下面很好,但现在我需要从字段 $4 中减去 20,如果它小于 20,如果它大于 20,字段 5 可以设置为 0。

31590,Foo,70,3.5
28327,Bar,291,14.55
25155,Baz,583,29.15
24179,Food,694,34.7
28670,Spaz,67,3.35
22190,bawk,4431,132.93
29584,alfred,142,7.1
27698,brian,379,18.95
24372,peter,22,1.1
25064,weinberger,8,.04

我有一些类似的工作,但现在有一些错误。

{print [=11=], -(>20?:20)}

因为字段 $4 可能小于 20,我不确定上面的内容是否真的有效,因为我真的想要 20 - $4 而不是 $4 - 20。

这给我 $4-20: {print [=12=], -(<20?20:)} 但如果 $4 小于 20,我需要 20-4。如果 $4>20 字段 $5 为 0。

我觉得你需要的是

{print [=10=], 20 - ( < 20 ?  : 20)}

或者让它更直接

{print [=11=], ( < 20 ? 20 -  : 0)}

如果 $4 小于 20,则此 returns 20 - $4 作为第五个字段。

如果$4大于等于20,这个returns0作为第五个字段。