[英]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.