【发布时间】:2017-04-04 21:41:25
【问题描述】:
这是一个简单的 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 脚本移动到 BEGIN 块中,如下所示 max2.awk。
#! /usr/bin/awk
BEGIN {max =0;
if (length($0) > max) { max = length($0)};
print max}
为什么不能用 awk -f max2.awk test_file 打印 test_file 的最大长度?
我如何使用每行的最大数量?
【问题讨论】:
-
您不喜欢
max1.awk的哪些方面?你在这里的真正目标是什么?正如 Kent 所解释的,BEGIN块在从文件中读取任何行之前执行($0在这种情况下是空字符串)。除了BEGIN块不是必需的(因为max的初始值已经默认为0)之外,max1.awk是完全正确的。 -
另外,已经有一个命令可以做到这一点...
wc -L < test_file