awk 下如何打印当前匹配行的上一行

2025-03-23 04:33:52
推荐回答(1个)
回答1:

awk是逐行处理文本的,除非你每次处理下一行之前先保存当前行,否则是没办法的。

awk '{a=$0;while(1){getline b;if(b~"^[0-9]+$"){print a;exit}else a=b}}' myfile

始终用变量a保存当前行

然后通过循环用getline获取下一行赋给变量b去进行匹配。

这里,如果b满足全数字的要求,则打印上一行a并退出循环;否则,更新a的值为b。