Splunk技术问询:如何提取含空格字段并统计Container ID计数
提取带空格字段并统计Container ID计数的解决方案
正则提取方案
针对你给出的示例字符串格式03 Container ID - ALL_ELIGIBLE_STG_RTAIN Offer Set ID,可以用以下正则精准提取目标Container ID:
(?<=^\d+ Container ID - )[A-Z_]+(?= Offer Set ID$)
如果需要提取完整的Container ID - ALL_ELIGIBLE_STG_RTAIN片段,正则可以调整为:
(?<=^\d+ )Container ID - [A-Z_]+(?= Offer Set ID$)
正则说明
(?<=^\d+ Container ID - ):正向断言,确保匹配位置前是「开头数字+空格+固定前缀Container ID -」[A-Z_]+:匹配由大写字母和下划线组成的Container ID(如果ID包含其他字符,可调整为[\w-]+等)(?= Offer Set ID$):正向断言,确保匹配位置后是「空格+固定后缀Offer Set ID」且到字符串结尾
提取+统计的代码示例(Python)
下面是完整的提取并生成统计表格的代码:
import re from collections import defaultdict # 模拟输入数据 input_lines = [ "03 Container ID - ALL_ELIGIBLE_STG_RTAIN Offer Set ID", "01 Container ID - ALL_ELIGIBLE_STG_RTAIN Offer Set ID", "02 Container ID - TEST_STG_CONTAINER Offer Set ID", "04 Container ID - TEST_STG_CONTAINER Offer Set ID", "05 Container ID - DEV_CONTAINER Offer Set ID" ] # 编译正则表达式 container_pattern = re.compile(r'(?<=^\d+ Container ID - )[A-Z_]+(?= Offer Set ID$)') # 统计每个Container ID的出现次数 counts = defaultdict(int) for line in input_lines: match_result = container_pattern.search(line) if match_result: counts[match_result.group()] += 1 # 输出统计表格 print("| Container ID | 计数 |") print("|--------------|------|") for cid, cnt in counts.items(): print(f"| {cid} | {cnt} |")
输出表格示例
| Container ID | 计数 |
|---|---|
| ALL_ELIGIBLE_STG_RTAIN | 2 |
| TEST_STG_CONTAINER | 2 |
| DEV_CONTAINER | 1 |
如果你的字符串格式有变动(比如前缀/后缀不固定),可以调整正则的断言部分,比如用Container ID - (.+?) Offer Set ID捕获中间内容,适配更灵活的场景。
内容的提问来源于stack exchange,提问作者venkat
相关产品推荐
相关产品推荐

