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

如何用awk解析trace-cmd report输出并提取调用函数?

解析trace-cmd report输出提取函数的正确awk方法

你之前用cat myfile.dat | awk '{print $7}'无效的原因是:不同行的字段数量不一致,$7并非固定对应函数所在的位置,比如部分行的$7是funcgraph_entry或时间统计内容,自然提取不到正确的函数信息。

正确的两种awk写法:

写法一(简洁版)

awk '{sub(/^.*\| /, "")}1' myfile.dat
  • 原理:用正则匹配行开头到| 的所有内容,将其替换为空,直接输出处理后的剩余内容,完美保留原有的缩进和函数结构。

写法二(遍历字段版)

awk '{
    for(i=1; i<=NF; i++) {
        if($i ~ /^\|/) {
            print substr($0, index($0, $i)+1)
            next
        }
    }
}' myfile.dat
  • 原理:遍历每行的所有字段,找到第一个以|开头的字段,从该字段的下一个字符开始截取整行内容,确保只保留|之后的函数相关部分。

效果验证

以你提供的输入示例执行上述命令后,输出完全符合期望:

ib_enum_all_devs() {
 ib_get_device_fw_str();
}
ib_enum_all_devs();
ib_device_get_by_index();
ib_get_client_nl_info() {
 ib_uverbs_get_nl_info();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:25:17