[英]How to use the max number for every line in awk?
这是一个简单的awk脚本max1.awk,用于获取所有行的最大长度。
#! /usr/bin/awk
BEGIN {max =0 }
{
if (length($0) > max) { max = length($0)}
}
END {print max}
可以通过一些测试文件获得最大长度。
awk -f max1.awk test_file
现在将所有awk脚本移到max2.awk下面的BEGIN块中。
#! /usr/bin/awk
BEGIN {max =0;
if (length($0) > max) { max = length($0)};
print max}
为什么无法使用awk -f max2.awk test_file在test_file上打印最大长度?
如何为每行使用最大数量?
在BEGIN
块将前AWK读取线被处理,如果脚本只BEGIN
块,无线将被加载,仅BEGIN
阻挡物通过AWK执行。
因此,您的最大长度计算未完成。
例如
kent$ awk 'BEGIN{print length($0)}'<<<"foo"
0 #here we get 0 instead of 3, because default var in awk is "".
#If you print NR, it is 0 as well.
您可以使用getline
逐行读取文件。 如果在BEGIN
块中使用它并重复执行,直到它返回1,就可以处理整个输入流。 在if
语句之前添加以下行:
while ( getline > 0 )
整个脚本如下所示:
BEGIN {max =0
while ( getline > 0 )
if (length($0) > max) { max = length($0)}
print max}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.