awk脚本通过将多行拼接成一行并在 SQL 语句的末尾遇到分号(;)时打印出来

devtools/2024/10/18 17:53:37/

concact_sql.awk 脚本如下

{if ($0 ~ /^SELECT|UPDATE|DELETE|INSERT/) {flag = 1buffer = ""gsub(/\n/, "", $0)cli = $0} else if (flag) {if ($0 ~ /;/) {flag = 0print cli buffer $0} else {buffer = buffer $0}} else if (flag == 0) {print $0}
} 

这个 awk 脚本的目的是处理 SQL 语句,特别是跨多行的 SELECTUPDATEDELETEINSERT 类型的 SQL 查询语句。脚本通过将多行拼接成一行并在 SQL 语句的末尾遇到分号(;)时打印出来。让我们逐步分析:

1. if ($0 ~ /^SELECT|UPDATE|DELETE|INSERT/)

  • 这条语句检查当前行是否以 SELECTUPDATEDELETEINSERT 开头。
  • 如果匹配到这些关键字,意味着该行是一个 SQL 查询的开始。
  • 如果条件满足,将 flag 变量设置为 1,表示我们进入了一个 SQL 语句的处理阶段。
  • 还初始化了 buffer 为空字符串,并将当前行的换行符去掉(gsub(/\n/, "", $0)),然后将当前行赋值给 cli 变量。

2. else if (flag)

  • 如果 flag 已经被设置为 1,说明我们正在处理一个多行的 SQL 语句。
  • 该部分检查当前行是否包含 ;,即 SQL 语句的结束符。
    • 如果找到了分号(if ($0 ~ /;/)),将 flag 重置为 0,表示 SQL 语句结束。
    • 然后将前面累积的内容(clibuffer)以及当前行拼接起来并打印出来。
    • 如果当前行没有分号(SQL 语句尚未结束),则继续将当前行的内容拼接到 buffer 中。

3. else if (flag == 0)

  • 如果 flag == 0,说明当前行不属于 SQL 语句的一部分,直接输出该行。

总结

这个 awk 脚本处理 SQL 查询语句时,会识别 SELECTUPDATEDELETEINSERT 开头的 SQL 语句,并将可能分布在多行的 SQL 语句拼接成一行,直到遇到分号结束语句。脚本中的其他内容则会原样输出。

使用方法

awk -f concact_sql.awk bcs1.log > new.log


http://www.ppmy.cn/devtools/125335.html

相关文章

position定位静态定位/绝对定位/相对定位

1.静态定位static&#xff1a;按照标准流进行布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>D…

LP笔试record

1. 这四个选项中&#xff0c;不正确的描述是&#xff1a; “当进程中的一个用户线程被阻塞时&#xff0c;整个进程并不用等待。” 理由&#xff1a; 采用轮转调度算法&#xff0c;进程中设置内核线程和用户线程的效果完全不同 这个描述是正确的。用户线程和内核线程在操作系…

【C++打怪之路Lv8】-- string类

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;重生之我在学Linux&#xff0c;C打怪之路&#xff0c;python从入门到精通&#xff0c;数据结构&#xff0c;C语言&#xff0c;C语言题集&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持…

雷池社区版本SYSlog使用教程

雷池会对恶意攻击进行拦截&#xff0c;但是日志都在雷池机器上显示 如何把日志都同步到相关设备进行统一的管理和分析呢&#xff1f; 如需将雷池攻击日志实时同步到第三方服务器, 可使用雷池的 Syslog 外发 功能 启用 Syslog 外发 进入雷池 系统设置 页面, 配置 Syslog 设置…

基于java的企业车辆管理系统设计与实现(论文+源码)-kaic

摘 要 随着经济的日益增长,车辆作为最重要的交通工具,在企事业单位中得以普及,单位的车辆数目已经远远不止简单的几辆,与此同时就产生了车辆资源的合理分配使用问题。现有的车辆管理系统存在着不足之处&#xff0c;例如系统不够稳定&#xff0c;功能不够全面。因此&#xff0c…

facebook受众选择设置策略的最佳方式

在进行Facebookguanggao投放时&#xff0c;受众的选择是一个至关重要的步骤。正确的受众选择不仅能够帮助我们更好地定位目标用户&#xff0c;还能显著提高guanggao的转化率和投资回报率&#xff08;ROI&#xff09;。然而&#xff0c;受众选择的数量和范围同样是需要认真考虑的…

IP地址如何支持远程办公?

由于当今社会经济的飞速发展&#xff0c;各个方向的业务都不免接触到跨省、跨市以及跨国办公的需要&#xff0c;随之而来的远程操作的不方便&#xff0c;加载缓慢&#xff0c;传输文件时间过长等困难&#xff0c;如何在万里之外实现远程办公呢&#xff1f;我们以以下几点进行阐…

第八章:信息安全工程(8.1信息安全管理--8.3工程体系架构)

8.1 信息安全管理 8.1.1 保障要求 网络与信息安全保障体系中的安全管理建设&#xff0c;通常需要满足以下5项原则: (1) 网络与信息安全管理要做到总体策划&#xff0c;确保安全的总体目标和所遵循的原则。 (2)建立相关组织机构&#xff0c;要明确责任部门&#xff0c;落实具体…