我的输入是:
cat input
1
4
-2
我想2
从第 1 列中减去一些值(例如 )。如果结果是> 0
print 它或 print 0
。换句话说,我不想要任何负数。
我的尝试是:
awk '{NUMBER=$1-2} if (NUMBER > 0) print NUMBER; else print 0'
但我可能犯了一些语法错误。
想要的输出是:
0
2
0
我的输入是:
cat input
1
4
-2
我想2
从第 1 列中减去一些值(例如 )。如果结果是> 0
print 它或 print 0
。换句话说,我不想要任何负数。
我的尝试是:
awk '{NUMBER=$1-2} if (NUMBER > 0) print NUMBER; else print 0'
但我可能犯了一些语法错误。
想要的输出是:
0
2
0
这可以是一个选项:
$ awk '{$1=$1-2>0?$1-2:0; print $1}' file
0
2
0
$1=$1-2>0?$1-2:0
是一个三元运算符,读法如下:
Set $1 to:
if ($1-2 > 0)
==> $1-2
else ==> 0
然后打印出来print $1
。
有了这个:
awk '{NUMBER=$1-2} if (NUMBER > 0) print NUMBER; else print 0'
您将if...
语句放在 awk 主体的条件部分而不是操作部分,因为它没有包含在大括号中。这是您所写内容的正确语法:
awk '{NUMBER=$1-2; if (NUMBER > 0) print NUMBER; else print 0}'
但实际上我会把它写成:
awk '{NUMBER=$1-2; print (NUMBER > 0 ? NUMBER : 0)}'