使用awk进行减法

时间:2015-06-14 04:54:31

标签: awk gawk

此处类似的帖子: awk if statement with simple math

下面很棒,但现在我需要从字段$ 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 $0, $4-($4>20?$4:20)}

因为4美元的领域可能会少于20,所以我不确定上面的内容是否真的需要20 - 4美元而不是4美元 - 20美元。

这给了我$ 4-20:{print $0, $4-($4<20?20:$4)}但如果$ 4小于20,我需要20-4。如果$ 4&gt; 20 field $ 5是0。

1 个答案:

答案 0 :(得分:4)

我认为你需要的是

{print $0, 20 - ($4 < 20 ? $4 : 20)}

或者让它更直接

{print $0, ($4 < 20 ? 20 - $4 : 0)}

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

如果$ 4大于或等于20,则返回0作为第五个字段。