Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/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
Linux awk中基于两列的增量变量_Linux_Shell_Variables_Awk_Count - Fatal编程技术网

Linux awk中基于两列的增量变量

Linux awk中基于两列的增量变量,linux,shell,variables,awk,count,Linux,Shell,Variables,Awk,Count,我正在编写一个awk脚本,该脚本解析CSV文件,比较一列包含日期,另一列包含活动类型,然后打印特定活动的计数 我写的代码是: NOW=$(date --date="5 days ago" +"%Y%m%d") awk -F "," -v mydate=$NOW '{ var_1=1; var_2=1;} { if ( substr($8,2,8) == mydate ) { if ( $6 == 1001 ) {

我正在编写一个
awk
脚本,该脚本解析CSV文件,比较一列包含日期,另一列包含活动类型,然后打印特定活动的计数

我写的代码是:

NOW=$(date --date="5 days ago" +"%Y%m%d")
awk -F "," -v mydate=$NOW '{
    var_1=1;
    var_2=1;} {
    if ( substr($8,2,8) == mydate ) {
                if ( $6 == 1001 ) {
                    var_1++;
                }
                else if ( $6 == 1003 ) {
                    var_2++;
                }
    }
    print var_1 var_2
}' *.csv
我得到的输出是

11
11
11
11
11
11
我相信这个问题与我定义
var_1
var_2
的方式有关;他们被重新初始化了

另外,我只想打印
var_1
var_2
的最终值;目前,它在
awk
的每次迭代中都会被打印出来


有什么建议吗?

在每行数据上执行两个块:

  • {var_1=1;var_2=1;}
    在每次传递时将变量设置为1
  • {
    如果(substr($8,2,8)==mydate){
    如果($6==1001){
    var_1++;
    }
    否则,如果($6==1003){
    var_2++;
    }
    }
    打印变量1变量2
    }
    var_1
    var_2
    的值打印为串联字符串(因此1和1之间没有空格)
  • 似乎
    substr()
    条件或
    $6
    条件从未匹配过

    您可能希望在第一个块之前开始,但为什么从1开始而不是从0开始并不明显。如果从0开始计数,则不需要开始块。您可能应该使用
    print var_1、var_2
    来分隔这两个值

    至于匹配项不匹配的原因,没有任何示例数据可供处理,但您可以通过为每行打印
    $8
    $6
    进行调试(还有
    mydate
    ;可能还有
    substr($8,2,8)
    ),这样您就可以看到发生了什么

    如果只希望在末尾打印值,则(在调试了主操作期间发生的事情之后),可以将
    打印
    放在结束块中:

    END { print var_1, var_2 }
    

    谢谢,开始,结束是我一直在寻找的。条件很好。