awk,if else statment,为数组

时间:2015-06-10 16:37:12

标签: awk

如果我有一个文件,其中第一列是一组单词:

 sad
 dog
 hand
 paper
 computer
 rabbit
 cow

我希望得到列的字长,检查它是偶数还是奇数,如果将它分配给数组,如果是奇数,则分配给一个单独的数组。

这就是我所拥有的,至少在语法中它是错误的:

awk '{if (print length($1)%2 = 0 ) x[NR]=$1; else y[NR]=$1;}'

2 个答案:

答案 0 :(得分:3)

这样的事情可能是你的出发点:

$ cat tst.awk
{
    if (length($0)%2) {
        odd[++numOdd] = $0
    }
    else {
        even[++numEven] = $0
    }
}
END {
    for (i=1; i<=numOdd; i++) {
        print "ODD:", odd[i]
    }
    for (i=1; i<=numEven; i++) {
        print "EVEN:", even[i]
    }
}

$ awk -f tst.awk file
ODD: sad
ODD: dog
ODD: paper
ODD: cow
EVEN: hand
EVEN: computer
EVEN: rabbit

但是你可能会遇到100%错误的方向,无论你想解决什么问题,所以我建议你编辑你的问题以提供更多信息。

答案 1 :(得分:0)

你可以这样做

awk '{if (length($1)%2) odd[NR]=$1; else even[NR]=$1}'

但是,也许这不是你需要做的。