awk数学:打印前检查结果
我的意见是:awk数学:打印前检查结果,awk,Awk,我的意见是: cat input 1 4 -2 我想从第1列中减去一些值(例如,2)。如果结果是>0打印它,或者打印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
cat input
1
4
-2
我想从第1列中减去一些值(例如,2
)。如果结果是>0
打印它,或者打印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 '{$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)}'
为此:
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)}'