直接用Sublime Text处理JQL日志会卡住,因其是非结构化文本,Sublime默认不识别JQL格式,易误操作;需通过正则提取(如"jql":s"(1)"或query=(2+))、排序归并、编码与转义检查三步高效处理。" ↩& ↩

为什么直接用 Sublime Text 处理 JQL 日志会卡住?
因为 JQL(Jira Query Language)日志通常是混杂了时间戳、用户 ID、操作类型、原始 JQL 字符串的非结构化文本,Sublime Text 默认不识别这种格式,Ctrl+H 替换或 Ctrl+Shift+P 调出命令面板时,若没预设好上下文,容易把 project = "XXX" 里的等号或引号误替换,甚至批量删掉关键字段。
真正要做的不是“编辑”,而是“提取 → 分组 → 重组”。重点在让 Sublime 快速定位 JQL 片段,并隔离无关干扰行。
- 先用
^.*JQL.*$(正则模式开启)匹配含 JQL 的行,再用"jql":s*"([^"]*)"或query=([^&s]+)提取实际查询字符串 - 关闭
match whole word,否则status这类常见词会被漏掉 - 别依赖高亮——Sublime 默认没有 JQL 语法包,
AND、ORDER BY不会变色,得靠正则锚定
怎么用正则 + 多行选择快速提取所有 JQL 查询?
日志里 JQL 可能藏在 JSON 字段、URL 参数、或纯文本描述中。统一用多步正则提取比手动复制快得多:
- 打开
Find → Replace(Ctrl+H),勾选Regular Expression - 查找:
"jql"s*:s*"([^"]+)"→ 匹配 JSON 中的 JQL 字符串 - 或查找:
query=([^& ]+)→ 匹配 URL 中的 JQL 参数(注意&和换行是边界) - 替换为:
$1,点击Replace All,所有 JQL 就垂直列在新文件里了 - 如果出现嵌套引号(比如
"jql": "text "quoted" value"),改用"jql"s*:s*"((?:[^"\]|\.)*)"避免截断
如何用列编辑和排序把同类 JQL 归并?
提取出来的 JQL 往往重复率高(比如不同用户查同一个项目),但因空格、大小写、字段顺序不同,肉眼难识别。Sublime 的列编辑和排序功能比写脚本还快:
- 全选所有 JQL(
Ctrl+A),然后Ctrl+Shift+P→ 输入Sort Lines→ 回车,按字母序排 - 观察重复模式:比如
project = ABC AND status = Done和status = Done AND project = ABC会被分到不同位置 → 这时用Ctrl+H先统一字段顺序:ANDs+([a-z_]+)s*=s*([^ ]+)→AND $1 = $2,再排序 - 想按项目归类?用
Find → Find in Files(Ctrl+Shift+F),搜索project = "([^"]*)",勾选Regex和Whole Word,结果窗里点文件名就能跳转
保存为可执行脚本前必须检查的三个地方
把整理好的 JQL 粘进 Python 或 Bash 脚本前,Sublime 里最容易忽略的是编码、换行和特殊字符:
- 确认文件编码是
UTF-8(右下角看,如果不是,File → Reopen with Encoding → UTF-8);Jira 接口对中文项目名或emoji敏感,GBK 编码会导致400 Bad Request - 检查末尾有没有隐藏的
(Windows 换行):打开View → Show Console,输入view.settings().get('default_line_ending'),设为'unix'避免 curl 报错 - JQL 中的
、"、$在 Bash 里要转义,但 Sublime 不会自动处理。建议先粘到 Python 脚本里用urllib.parse.quote()编码,而不是裸写进curl -G命令
真正麻烦的不是提取,是 JQL 里那些看似合理实则无效的写法——比如 updated >= -5d 在旧版 Jira 会报错,得改成 updated >= "2024-04-01"。Sublime 帮不了这个,得靠你扫一眼再动手。


















