awk变量在定义之前用于确定最长的行
鉴于以下文件:
>tna
ATGC
>ggf
TG
>gta
TGGTT
我想找到不以>. 我已经找到了 AWK 代码:
awk '!/>/ {len=length($0)} len > maximum {maximum=len} END{print maximum}' file
但是,我无法解释如何maximum在定义之前使用。首先,我进行比较len,然后设置maximum为len。AWK 怎么知道是什么maximum?
谢谢!
回答
默认情况下,任何未初始化的字符串变量都是空字符串"",任何数字都为零(它们实际上都是空字符串,但在数字上下文中被视为零)。
但是您可能还想考虑/>/将匹配所有包含 的 行>而不是以它开头的事实。你最好使用类似(可读)的东西:
!/^>/ {
len = length($0)
if (len > max) {
max = len
}
}
END {
print max
}
或者,以其极简的形式:
!/^>/{len=length($0);if(len>max){max=len}}END{print max}