You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

awk命令功能解析及指定行匹配规则修改咨询

AWK命令解析与修改方案

一、原AWK命令工作原理

原命令(修正HTML转义后的完整代码):

awk '/Conditional jump or move depends on uninitialised value/ {block=1} block {str=str sep $0; sep=RS} /^==.*== $/ {block=0; if (str!~/oracle/ && str!~/OCI/ && str!~/tuxedo1222/ && str!~/vprintf/ && str!~/vfprintf/ && str!~/vtrace/) { if (str!~/^$/){print str}} str=sep=""}' file_name.txt >> CondJump_val.txt

核心执行逻辑拆分

  • 触发块收集:当匹配到行内容包含Conditional jump or move depends on uninitialised value时,设置标记block=1,启动后续行的收集模式。
  • 收集块内容:只要block标记为1,就把当前行拼接到变量str中——第一次拼接时sep为空,之后每次用系统默认的换行符(RS,记录分隔符)作为行分隔符。
  • 结束块并过滤输出:当匹配到以==开头、以== 结尾的行时,关闭收集模式(block=0):
    1. 检查str是否不包含oracle、OCI、tuxedo1222、vprintf、vfprintf、vtrace这些指定字符串;
    2. 同时确认str不为空字符串;
    3. 满足条件则打印str,最后重置str和sep为空,准备处理下一个块。
  • 输出定向:最终结果追加写入CondJump_val.txt文件。

二、修改为仅从第二行开始检查指定内容

要实现只对块内第二行及以后的内容做Oracle/OCI等过滤检查,需要拆分块内的第一行和后续行,单独对后续行做校验:

修改后的AWK命令

awk '/Conditional jump or move depends on uninitialised value/ {block=1; line_num=0; str=""; sep=""; check_str=""} 
     block {
         line_num++
         if (line_num == 1) {
             str = $0  # 保留第一行到输出变量
         } else {
             str = str sep $0  # 后续行拼接到输出变量
             sep = RS
             check_str = check_str sep $0  # 后续行存入单独校验变量
         }
     } 
     /^==.*== $/ {
         block=0
         # 仅对第二行及以后的内容(check_str)做过滤检查
         if ((check_str !~ /oracle/ && check_str !~ /OCI/ && check_str !~ /tuxedo1222/ && check_str !~ /vprintf/ && check_str !~ /vfprintf/ && check_str !~ /vtrace/) && str !~ /^$/) {
             print str
         }
         # 重置所有变量
         str = sep = check_str = ""
     }' file_name.txt >> CondJump_val.txt

修改点说明

  • 新增line_num变量,用于追踪块内的行号;新增check_str变量,专门存储块内第二行及以后的内容。
  • 块内第一行直接存入str(用于最终输出),不进入check_str;后续行同时存入str和check_str。
  • 结束块时,仅对check_str执行Oracle/OCI等内容的过滤校验,str保留整个块的完整内容用于输出。
  • 每次块结束后,重置所有相关变量,避免干扰下一个块的处理。

内容的提问来源于stack exchange,提问作者USER

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 05:50:26