【问题标题】:How does the next command actually function下一个命令实际上是如何起作用的
【发布时间】:2017-02-28 03:16:58
【问题描述】:

我得到 (FILENAME=123.dat FNR=2) 致命:在以下脚本中尝试除以零的错误。下一个命令是否会忽略以下两个代码块并开始执行第二条记录的代码。如果不是这种情况,我怎么能忽略文件第一条记录上的任何代码执行?

awk ' BEGIN {

FS="<[^>]+>"; 
RS="";
review1=1;
review2=1;
rating=0;
criteria=7;


}

#ignores the first record of each file
FNR<2 { next }  

FNR==NR {

#sums all the ratings of an authors
for(i=8; i<=14;i++) {
    rating+=$i;     
}

    #stores the average rating of each author
    sum1+=rating/criterias;

    #stores each average rating
    total1[review1]=rating/criteria

    review1++;
    rating=0;   
} 

FNR!=NR {

.... code

}

END {

#calculates the mean(overall rating) for hotel1
mean1=sum1/review1;

printf("Mean hotel_1: %.2f\n",mean1);

} ' "$2" "$3"

【问题讨论】:

    标签: awk


    【解决方案1】:

    我得到 (FILENAME=123.dat FNR=2) 致命:除以零尝试错误 在以下脚本中。

    sum1+=rating/criterias;
    

    criterias 未定义,因此出现上述错误。

    下一个命令实际上是如何工作的

    下一条语句强制 awk 立即停止处理 当前记录并继续下一条记录。这意味着没有 对当前记录执行进一步的规则,其余的 当前规则的操作未执行。

    FNR 和 NR

    当 awk 从多个输入文件中读取时,awk NR 变量将给出 相对于所有输入文件的记录总数。 AWK FNR 将为您提供每个输入文件的记录数。

    如果不是这样,我如何才能忽略文件第一条记录上的任何代码执行?

    你已经FNR&lt;2 { next }做的没错,你也可以写成FNR==1{ next }awk读取每个文件的第一条记录时不会执行任何规则。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-05
      • 2018-11-12
      • 2017-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      相关资源
      最近更新 更多