awk数组语法错误

时间:2012-01-23 18:50:33

标签: shell awk

我正在尝试将awk用作某些类型的元素计数器,如下所示,但是我遇到了语法错误。

cat file | awk '{if($2>$3)A[$1]++}END{for(index in A){print index, A[index]}}'

有人可以帮忙吗?

以下是语法错误:

awk: {if($2>$3)A[$1]++}END{for(index in A){print index, A[index]}}
awk:                                 ^ syntax error
awk: {if($2>$3)A[$1]++}END{for(index in A){print index, A[index]}}
awk:                                                  ^ syntax error
awk: {if($2>$3)A[$1]++}END{for(index in A){print index, A[index]}}
awk:                                                           ^ syntax error

非常感谢你!

2 个答案:

答案 0 :(得分:3)

index似乎是reserved word。将其更改为其他内容。也许是key

答案 1 :(得分:1)

良好做法:

  1. 凯文指出,index是一个保留字。尝试为key使用不同的array subscripts

  2. 无用地使用cat awk可以filename作为输入。做这样的事情 -

    awk '{if($2>$3)A[$1]++}END{for(i in A){print i, A[i]}}' file

  3. 如果$2>$3是唯一的条件,那么您可以将其缩短为以下内容 -

    awk '$2>$3{A[$1]++}END{for(i in A){print i, A[i]}}' file