Awk 将END和另一个条件合并,如“$1<;计数| |结束`

Awk 将END和另一个条件合并,如“$1<;计数| |结束`,awk,Awk,回答时,我写了以下awkcode % cat mark_blocks $1<count { print count; print ""; for(i=1;i<=count;i++) print l[i]; } # executed for each line { l[$1] = $0; count=$1} END { print count; print ""; for(i

回答时,我写了以下
awk
code

% cat mark_blocks
$1<count { print count; print "";
           for(i=1;i<=count;i++) print l[i]; }
# executed for each line
         { l[$1] = $0; count=$1}
END      { print count; print "";
           for(i=1;i<=count;i++) print l[i]; }
% 
但我得到的是

awk: e.awk:1: $1<count||END{print count;print "";for(i=1;i<=old;i++)print l[i]; }
awk: e.awk:1:           ^ syntax error

awk:e.awk:1:$1只有当脚本处理完其所有记录时,才会排除
awk
脚本中的
END

因此,它可以被视为一个finaling语句,其中不存在当前记录读取以获得预期的$1

简而言之,
END
块只被排除一次,显然是在末尾

您可以在其中完美地使用
|
或在普通块中使用

乙二醇

awk'$1==1 | |$1==2{print$0}'

将打印
$1
1
2
的所有记录

用于输入

1
2
3
4
输出将是

1
2
附:如果有明确的证据支持,“这是不可能的”这句话,当然可能是一个完美的答案。
1
2