回答this question我写了以下awk
代码
% 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]; }
%
我为$0<count
和END
条件所写的操作完全相同。
我觉得我可以写一个条件,如
$1<count||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
我已经搜索了一段时间的答案,但也许是因为英语不是我的母语,或者因为它不可能;-)我找不到答案。
有什么想法吗? TIA
答案 0 :(得分:1)
仅当脚本处理完所有记录后,END
脚本中的awk
块才会被删除。
因此,可以将其视为最终确定声明,其中没有当前记录读取以获得您期望的$ 1。
简而言之,END
区块只有一次,显然最终。
在正常的区块
中,你可以完美地使用||
或你所拥有的
例如
awk '$1==1||$1==2{ print$0}'
将打印$1
为1
或2
的所有记录。
用于输入
1
2
3
4
输出
1
2