如何按‘-’分组提取每组指定行?awk命令调试求助
提取分组文本指定行的正确awk命令
问题原因
你用awk 'NR%6==1'的逻辑是按全局行号每6行取第一行,但你的文件以-作为分隔符,每组是分隔符后的7行,这个逻辑和实际分组结构不匹配,导致输出不符合预期。
正确实现
使用以下awk命令可以精准提取每组的第6行:
/-/{cnt=0; next} {cnt++} cnt==6
命令解释
- 当读取到分隔符
-时,重置计数器cnt为0,并跳过当前行(不处理分隔符本身) - 读取非分隔符行时,计数器
cnt自增1 - 当
cnt等于6时,输出当前行(即每组的第6行)
执行该命令后,输出结果将完全符合你的期望:
line6 line12 line18
内容的提问来源于stack exchange,提问作者Saeed
相关产品推荐
相关产品推荐

