Awk If-Elseif-If Block

时间:2016-08-09 21:18:18

标签: awk gawk csh

NR>NRMIN{
    if($3 == "Leu") {
        if($4 == "CD1" || $4 == "HD11" || $4 == "HD12" || $4 == "HD13") {
            next;
        }
    }
    elseif($3 == "Val") {
        if($4 == "CD1" || $4 == "HD11" || $4 == "HD12" || $4 == "HD13") {
            next;
        }
    }
    else {
        print;
    }   
}

我打算有选择地打印空格分隔文件的行。 请告诉我上述代码在gawk -f FILE_Modifier.awk NRMIN = 90 FILE > NEWFILE

时出错的原因

错误消息

gawk: FILE_Modifier.awk:7:     elseif($3 == "Val") {
gawk: FILE_Modifier.awk:7:                         ^ syntax error
gawk: FILE_Modifier.awk:12:     else {
gawk: FILE_Modifier.awk:12:     ^ syntax error

1 个答案:

答案 0 :(得分:1)

没有CASE(OP)。无论如何,您可以将脚本重写为:

elseif

不要使用所有大写变量名来避免与内置名称发生冲突。除非您有特殊原因,否则请使用awk -v nrmin=90 '(NR > nrmin) && !(($3 ~ /^(Leu|Val)$/) && ($4 ~ /^(CD1|HD11|HD12|HD13)$/))' file 预先设置变量。