如何使用AWK提取匹配模式后第3、5行并合并为单行输出
AWK提取模式匹配后指定行并合并输出方案
修正后可直接使用的命令
awk '/pattern/ {t3[NR+3]; t5[NR+5]} NR in t3 {l3=$0} NR in t5 {print l3, $0}' 日志文件路径
实现逻辑
- 匹配到目标模式
pattern时,分别标记后续第3行、第5行对应的行号 - 读取到被标记为第3行的内容时,将内容暂存到变量,不立即输出
- 读取到被标记为第5行的内容时,将暂存的同批次第3行内容与当前行内容拼接打印,实现同一模式匹配到的两行内容合并为一行输出
自定义调整说明
如果需要修改两行内容之间的分隔符,将print l3, $0中的逗号替换为自定义分隔字符串即可,例如要使用|作为分隔符,修改为print l3 " | " $0。
样例验证效果
使用给出的测试输入执行命令,输出结果与预期完全一致:
3rd line 5th line 3rd line after second pattern 5th line after second pattern
内容的提问来源于stack exchange,提问作者Ramon SK
相关产品推荐
相关产品推荐

