Sublime列选择仅生成视觉矩形选区,不识别表格逻辑,仅适用于严格对齐的纯文本;提取结构化数据须用正则捕获组配合Alt+Enter批量选取,再经清洗方可导入Excel。

列选择本身不提取,只是选中矩形区域
Sublime 的列选择(Ctrl+Shift+↑/↓ 或鼠标 Alt+拖拽)只生成一个矩形选区,它不会自动识别表格结构、跳过空格、对齐列边界或过滤行。你看到的是“视觉上对齐的字符块”,不是“逻辑上的第3列数据”。常见错误是:选中后复制,粘贴进 Excel 却发现字段错位、首行被截断、中间混入空格或制表符——因为列选择不管语法、不认分隔符、也不跳过换行。
适用场景有限:仅适合已严格对齐的纯文本表格(如 ps aux 输出、固定宽字段日志),且所有目标列在相同列号范围内。一旦有换行、缩进不均、中文字符(占位2字节)或软换行,列选择立刻失效。
参数差异明显:Alt+鼠标拖拽 依赖当前字体是否等宽(非等宽字体下完全不可用);Ctrl+Shift+↑/↓ 只能纵向扩展已有列选区,无法从零开始创建。
真正提取表格数据得靠正则 + 捕获组
要从 CSV、TSV、SQL SELECT 结果或日志中抽某几列,必须用正则捕获组配合 Alt+Enter(Windows/Linux)或 Cmd+Enter(macOS)批量选中括号内容。否则复制出来全是整行或乱序片段。
- CSV 提取第2、4列:
^([^,]*,)([^,]*,)([^,]*,)([^,]*).*$→ 替换为$2$4,再Ctrl+H→Find All→Alt+Enter - SQL 查询结果(空格分隔,字段名在第一行):
^\s*\S+\s+(\S+)\s+\S+\s+(\S+)→ 匹配第二、四字段值,注意开头^\s*吃掉可能的缩进 - 带引号的 CSV(如
"a,b",c,"d,e"):Sublime 原生正则不支持递归匹配,别硬刚;先用Ctrl+H把"([^"]*)"替换为«$1»临时标记,再按逗号切,最后还原
性能影响明显:含大量 .* 的正则在 >5MB 文件里会卡顿甚至假死;优先用 [^,\n]* 替代 .*,强制停在换行或分隔符前。
跨文件表格数据提取必须分两步走
Ctrl+Shift+F 的 Find in Files 不支持捕获组导出,它只输出 filename:line_num:full_line 格式。直接复制粘贴会导致每行带前缀,根本没法当表格用。
实操必须拆解:
- 第一步:用
Ctrl+Shift+F搜^SELECT|INSERT INTO等关键词,Where 填./sql/**/*.sql,勾Regular Expression,复制全部结果到新文件 - 第二步:在这个新文件里,用
^(SELECT|INSERT)\s+(.*?)(?:FROM|INTO)这类正则,配合Alt+Enter提取字段列表部分 - 第三步:对提取出的字段串再跑一次正则,比如用
\b(\w+)\b\s+([^\s,]+)抓字段名和类型,避免.*?跨行吞掉后续内容
容易被忽略的是编码:如果 SQL 文件是 GBK,中文字段名会乱码导致正则匹配失败;务必先 File → Reopen with Encoding → UTF-8。
粘贴后必须清洗,不能直接当表格用
无论用哪种方式提取,粘贴进新文件后的数据大概率带多余空格、空行、前后制表符或不可见 BOM。Excel 会把这些当真实内容解析,导致列错位、首列变数字、空行撑高表格。
清洗动作不能省:
- 删空行:
Ctrl+H→ 查找^\s*$→ 替换为空(勾Regular Expression) - 去首尾空白:
Ctrl+H→ 查找^\s+|\s+$→ 替换为空 - 合并连续空格为单 tab:
Ctrl+H→ 查找\s{2,}→ 替换为\t(方便后续粘贴进 Excel 自动分列) - 检查换行符:
View → Line Endings统一设为Unix (LF),避免 Windows\r\n在某些工具里被当两行
真正麻烦的不是怎么选,而是选完之后没人帮你校验字段数是否一致、有没有漏掉某一行的换行、或者某列值里恰好含逗号却没被引号包裹——这些都得人工扫一眼。

















