云日志服务 LTS-字段值提取函数:e_kv_delimit
e_kv_delimit
通过分隔符提取源字段中的键值对信息。
- 函数格式
e_kv_delimit(源字段或源字段列表, pair_sep=r"\s", kv_sep="=", prefix="", suffix="", mode="fill-auto")
- 参数说明
参数名称
参数类型
是否必填
说明
源字段或源字段列表
字符串或字符串列表
是
字段名或多个字段名的列表。
pair_sep
String
否
用于分隔键值对的正则字符集,默认为\s。例如\s\w、abc\s等。
说明 如果您需要使用字符串对字段进行分隔,推荐您使用str_replace或regex_replace将字符串转换成字符作为分隔符,然后再使用e_kv_delimit函数对字段进行分隔。
kv_sep
String
否
用于分隔键值对的正则字符串,默认为=,不限于单个字符。
说明:可以使用非捕获分组,但不能使用捕获分组。
prefix
String
否
给提取的字段名添加前缀。
suffix
String
否
给提取的字段名添加后缀。
mode
String
否
字段的覆盖模式。默认为fill-auto。
- 返回结果
返回附带新字段值的日志。
- 函数示例
- 示例1:使用默认分隔符=提取键值对信息。
- 测试数据
{ "data": "i=c1 k1=v1 k2=v2 k3=v3" }
如果测试数据为request_uri: a1=1&a2=&a3=3,a2值为空,则使用e_kv_delimit()函数无法提取出a2。您可以使用e_regex()函数进行提取,例如e_regex("request_uri",r'(\w+)=([^=&]*)',{r"\1":r"\2"}, mode="overwrite")。
- 加工规则
e_kv_delimit("data")
- 加工结果
data: i=c1 k1=v1 k2=v2 k3=v3 i: c1 k2: v2 k1: v1 k3: v3
- 测试数据
- 示例2:使用分隔符&?提取键值对信息。
- 测试数据
{ "data": "k1=v1&k2=v2?k3=v3" }
- 加工规则
e_kv_delimit("data",pair_sep=r"&?")
- 加工结果
data: k1=v1&k2=v2?k3=v3 k2: v2 k1: v1 k3: v3
- 测试数据
- 示例3:使用正则表达式提取键值对信息。
- 测试数据
{ "data": "k1=v1 k2:v2 k3=v3" }
- 加工规则
e_kv_delimit("data", kv_sep=r"(?:=|:)")
- 加工结果
data: k1=v1 k2:v2 k3=v3 k2: v2 k1: v1 k3: v3
- 测试数据
- 示例1:使用默认分隔符=提取键值对信息。