if语句中带星号的错误

时间:2016-03-14 17:15:21

标签: bash shell nawk

我遇到以下问题:

nawk -F "," '{if($2<=2)&&($9!=45)&&($11==2348*)) print $2}' abc12* | wc -l

错误在($11==2348*)。我尝试将此数字放在变量x中并执行($11==$x*)

3 个答案:

答案 0 :(得分:0)

如果你的意思是正则表达式匹配,请将其更改为

$ awk -F, '$2<=2 && $9!=45 && $11~/^2348/ {c++; print $2} END{print c}' abc12*

请注意,您也可以在脚本中加入行数。

如果你想要进行等级检查$11=="2348*"会这样做。将检查该字段是字面2348*,而没有*的任何特殊含义。

答案 1 :(得分:0)

看起来你打算使用regexp?

$11==2348* 

应该给你一个语法错误

2348*

是不完整的乘法。

对于正则表达式匹配,您必须使用

$11 ~ /2348*/

如果你打算将0归为“8”或

$11 ~ /2348.*/ or may be $11 ~ /2348[0-9]*/

如果初始意图在“2348”之后有任何字符或只有数字

答案 2 :(得分:0)

我认为你的代码可以正常工作,如果你不会再增加一个“)”而不是预期。如果算上它们就有7 ....所以这个($11==2348*))应该是($11==2348*)