此处类似的帖子: 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。
答案 0 :(得分:4)
我认为你需要的是
{print $0, 20 - ($4 < 20 ? $4 : 20)}
或者让它更直接
{print $0, ($4 < 20 ? 20 - $4 : 0)}
如果$ 4小于20,则返回20 - $ 4作为第五个字段。
如果$ 4大于或等于20,则返回0作为第五个字段。