Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 计算每个子目录中来自同一报告文件的警告数_Bash_Awk - Fatal编程技术网

Bash 计算每个子目录中来自同一报告文件的警告数

Bash 计算每个子目录中来自同一报告文件的警告数,bash,awk,Bash,Awk,我在所有子目录中都有一个相同的文件名**(report.txt)**例如,我显示了来自2个子目录的文件(report.txt)的数据,如下所示: report.txt in File1_D sub-directory: Stage Family Fatals Errors Warnings Infos ----- -------- -------- -------- -------- -------- CHE

我在所有子目录中都有一个相同的文件名**(report.txt)**例如,我显示了来自2个子目录的文件(report.txt)的数据,如下所示:

report.txt in File1_D sub-directory:

  Stage           Family      Fatals    Errors  Warnings     Infos
  -----           --------  --------  --------  --------  --------
  CHECK           CODING           0         1         0         0
  CHECK           CONN             0         1         0         0
  LIST            CODING           0        12         0         0
  LIST            CONN             0        15         7         0
  -----           --------  --------  --------  --------  --------
  Total                            0        29         7         0

report.txt in File2_D sub-directory:

  Stage           Family      Fatals    Errors  Warnings     Infos  Remaining
  -----           --------  --------  --------  --------  --------  ----------
  CHECK           CODING           0         0         1         0           0
  LIST            CLK              0        49         0         0           0
  LIST            CODING           0         3         0         0           0
  LIST            CONN             0         2       598         0         196
  LIST            SYN              0         0       100         0         126
  -----           --------  --------  --------  --------  --------  ----------
  Total                            0        54       699         0         322
其中一个子目录中的一个文件(report.txt)将具有六列,而在另一个子目录文件(report.txt)中,它将具有七列,我需要警告列的计数和如下输出:

File1_D:
Total number of warnings : 7

File2_D:
Total number of warnings : 699
这里File1_D和File2_D是子目录名称,我尝试了以下代码,但没有得到所需的输出:

#!/bin/bash

    for d in *_D;
    do
    echo "$d:";
    if [[ "$NF" -eq 7 ]];
    then
        awk '/Total/{print "Total number of warnings:" $(NF-2);exit}' "$d"/report.txt
    else
        awk '/Total/{print "Total number of warnings:" $(NF-1);exit}' "$d"/report.txt
    fi
    done

请您尝试下面的方法,在这里使用
find
+
awk
组合(也请给出我提到的
您的路径的绝对路径

其中
script.awk
如下所示

cat script.awk
#!/usr/bin/awk

FNR==1{
  print FILENAME":"
  for(i=1;i<=NF;i++){
    if(tolower($i)=="warnings"){  field=i  }
  }
}
/Total/{
  print "Total number of warnings:" $(field-1)
}
cat script.awk
#!/usr/bin/awk

FNR==1{
  print FILENAME":"
  for(i=1;i<=NF;i++){
    if(tolower($i)=="warnings"){  field=i  }
  }
}
/Total/{
  print "Total number of warnings:" $(field-1)
}
/test/singh_test/report.txt:
Total number of warnings:7
/test/singh_test/test1/report.txt:
Total number of warnings:699