如何在AWK中使用多个RS?日志特定模式提取求助
AWK多记录分隔符提取日志模式解决方案
可行命令
针对你的需求,使用GNU AWK(支持正则表达式作为记录分隔符)可以实现目标输出,执行以下命令:
awk 'BEGIN{RS="RECORD|\\*"; FS="-1/NO,"} NF>1 {sub(/^\s+/,"",$NF); print $NF "\nRECORD"}' log2
命令说明
RS="RECORD|\\*":将RECORD或*设为记录分隔符,让AWK把每个目标块单独作为一条记录处理FS="-1/NO,":用-1/NO,切割字段,取最后一个字段($NF)就是你需要的核心内容sub(/^\s+/,"",$NF):移除内容开头的多余空格,保证输出格式整洁print $NF "\nRECORD":输出提取的内容后追加RECORD,完全匹配你要的目标格式
适配调整
如果日志中的分隔符不是*或RECORD,只需修改RS后的正则表达式,替换成实际的分隔标识即可。
内容的提问来源于stack exchange,提问作者Anish Kumar
相关产品推荐
相关产品推荐

