寻求awk技术协助:提取文件特定段落及后续两行内容
解决awk提取特定段落及后续行的问题
你的命令存在重复打印、计数器逻辑混乱的问题,无法正确实现需求。以下是修正后的awk命令:
/TC024/{p=1} p{print; if(/^$/){p=0; n=0}} !p && n<2{print; n++; if(n==2) exit}
命令说明:
/TC024/{p=1}:匹配到以TC024开头的行时,开启打印标记pp{print; if(/^$/){p=0; n=0}}:标记p生效时打印当前行;如果遇到空行(段落结尾),关闭p并初始化后续行计数器n!p && n<2{print; n++; if(n==2) exit}:段落结束后,打印接下来的2行,每打印一行计数器加1,完成后直接退出程序
原命令问题分析:
p;会直接打印所有p=1的行,后续p && c<=2{print}又重复打印这些内容- 计数器
c的触发时机错误,空行时c++后,后续行仍在p=1的状态下被重复处理 - 未明确区分段落内的行和空行后的行,整体逻辑流程混乱
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

