重新初始化awk变量

时间:2015-03-05 23:52:48

标签: awk

我正在努力重置一些awk变量。我有多行形式: 一二三......十。

每行中每个单词的各种外观。我试图计算每个单词每行一个的次数,与其他行的计数分开。

这是我到目前为止所做的:

{ for(i=length(Num); i>0; i--)

    if( Num[i] == "one" )
    {                   
            oneCount++
    }
    else if( Num[i] == "two" )
    {       
            twoCount++
    }
    else if( Num[i] == "three" )
    {
            threeCount++
    }
...
}

当我打印出计数值时,计数不会重新初始化每个新行。我该如何解决这个问题?

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

你好像很困惑。要计算; - 分隔行中每个字段的计数,请执行以下操作:

awk -F';' '{
    split("",cnt)    # or "delete cnt" if using GNU awk. 
    for (i=1;i<=NF;i++) {
        cnt[$i]++
    }
    for (word in cnt) {
        print word, cnt[word]
    }
}' file

现在还有什么需要它吗?

答案 1 :(得分:0)

尝试将BEGIN部分中的数组初始化为您想要计算的多个变量。您可以在部分中运行循环以清除每个新行开头的数组。

或者,您可以在执行每一行的程序部分中将每个变量的值重置为0或null,但我猜你有很多变量。