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

如何按多个分隔符拆分字符串但保留方括号内的内容?

解决方案

你的问题在于原代码的分隔符设置会破坏方括号内的时间格式——冒号被全局用作分隔符,导致时间字符串被拆碎,无法得到预期结果。以下两种方法可以准确提取目标内容:

方法一:正则匹配捕获组

利用awk的match函数匹配完整字符串,直接捕获需要的内容:

awk '{match($0, /[0-9]+:([0-9]+) - \[(.*)\]/, arr); print arr[1] ", " arr[2]}'

说明:

  • 正则表达式/[0-9]+:([0-9]+) - \[(.*)\]/精准匹配输入格式:
    • ([0-9]+)捕获冒号后的数字100
    • (.*)捕获方括号内的完整时间字符串
  • 捕获的内容存入数组arr,最后按要求格式输出两个值

方法二:分步拆分

先按固定分隔符拆分字符串,再分别处理前后部分:

awk -F ' - \\[' '{split($1, a, ":"); print a[2] ", " substr($2, 1, length($2)-1)}'

说明:

  1. 用 - [作为分隔符,将输入拆分为10:100和10/09/21:12:23:22]两部分
  2. 对第一部分用split按冒号拆分,取第二个元素100
  3. 对第二部分用substr去掉末尾的],得到完整时间字符串
  4. 最后将两部分用, 拼接输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:05:49