AWK意外字符

时间:2019-04-03 07:09:42

标签: awk

我从同伴那里得到了解决我问题的方法。这是代码。

last | awk '{
if(NF>7){
if($(NF-5)=="Mar"){ # You may change the month or even accept it as a parameter
if($(NF-4) != date){datecount++};
match($(NF-3),/^([0-9]+)/,arr);
if(arr[1]>=8 && arr[1]<=16){
# Note I am using different time interval, change it accordingly
count++;
}
}
date=$(NF-4);
}
}
END{
datecount++;
print "Total logins   : ",count;
print "Total dates    : ",datecount;
print "Average logins : ",count/datecount;
}'

我尝试将其保存为name.sh并使用bash name.sh运行,我尝试将其保存为name.awk并以awk -f name.awk运行,但是我仍然遇到相同的错误:

awk: 1: unexpected character '.'

我不完全确定自己是否应按要求运行脚本。

注意:我正在ubuntu 18.04上的虚拟机上工作(我认为),并且正在尝试通过终端运行脚本。

1 个答案:

答案 0 :(得分:1)

似乎您有}{大括号来解决问题:)始终尝试以良好的方式缩进代码,以使您轻松了解条件的起始和结束位置。您能不能试一下。

last | awk '{
  if(NF>7){
    if($(NF-5)=="Mar"){                
      if($(NF-4) != date){datecount++};
      match($(NF-3),/^([0-9]+)/,arr);
        if(arr[1]>=8 && arr[1]<=16){
          count++;
        }
      date=$(NF-4);
    }
  }
}
END{
datecount++;
print "Total logins   : ",count;
print "Total dates    : ",datecount;
print "Average logins : ",count/datecount;
}'