awk变量在定义之前用于确定最长的行

鉴于以下文件:

>tna
ATGC
>ggf
TG
>gta
TGGTT

我想找到不以>. 我已经找到了 AWK 代码:

awk '!/>/ {len=length($0)} len > maximum {maximum=len} END{print maximum}' file

但是,我无法解释如何maximum在定义之前使用。首先,我进行比较len,然后设置maximumlen。AWK 怎么知道是什么maximum

谢谢!

回答

默认情况下,任何未初始化的字符串变量都是空字符串"",任何数字都为零(它们实际上都是空字符串,但在数字上下文中被视为零)。

但是您可能还想考虑/>/将匹配所有包含 的>而不是以它开头的事实。你最好使用类似(可读)的东西:

!/^>/ {
    len = length($0)
    if (len > max) {
        max = len
    }
}
END {
    print max
}

或者,以其极简的形式:

!/^>/{len=length($0);if(len>max){max=len}}END{print max}


以上是awk变量在定义之前用于确定最长的行的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>