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

Splunk技术问询:如何拆分多行字段并转换为表格格式展示

Splunk多行字段拆分并转换为表格解决方案

针对你遇到的output字段包含双引号包裹的多行数据场景,以下两种方案可实现拆分并转换为表格:

方案一:使用multikv命令(推荐)

利用multikv的表头识别能力,步骤简洁高效:

# 替换为你的基础搜索语句
your_base_search
| rex field=output "\"(?<db_data>[^\"]+)\""  # 提取双引号内的所有数据(含换行)
| makemv delim="\n" db_data  # 按换行符拆分多值字段
| mvexpand db_data  # 将多值字段展开为独立事件行
| multikv forceheader=1 fields=DbName,CurrentSizeGB,UsedSpaceGB,FreeSpaceGB,ExtractedDate delim="|"  # 指定|为分隔符,强制第一行为表头
| table DbName CurrentSizeGB UsedSpaceGB FreeSpaceGB ExtractedDate

各命令作用:

  • rex:剥离output字段前后的双引号,提取内部纯数据到db_data字段。
  • makemv:将db_data中的每行数据按换行符分割为多值元素。
  • mvexpand:把多值字段的每个元素拆分为单独的事件行。
  • multikv:指定分隔符为|,强制识别第一行作为表头,自动匹配后续行的字段值。
  • table:以标准表格形式展示目标字段。

方案二:使用rex手动提取字段

若multikv无法生效,可通过rex精准匹配每个字段:

# 替换为你的基础搜索语句
your_base_search
| rex field=output "\"(?<db_data>[^\"]+)\""
| makemv delim="\n" db_data
| mvexpand db_data
| rex field=db_data "^(?<DbName>[^|]+)\|(?<CurrentSizeGB>[^|]+)\|(?<UsedSpaceGB>[^|]+)\|(?<FreeSpaceGB>[^|]+)\|(?<ExtractedDate>.+)$"
| where isnotnull(DbName) AND DbName != "DbName"  # 过滤掉表头行
| table DbName CurrentSizeGB UsedSpaceGB FreeSpaceGB ExtractedDate

补充提示:

  • 若output字段内的换行符是\r\n,需将makemv的delim参数改为"\r\n"适配格式。
  • 执行前务必将your_base_search替换为实际的基础筛选语句(如索引、源类型等条件)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:22:35