📋 文本列提取器
按分隔符提取指定列,支持多列
什么是文本列提取工具?
文本列提取工具是一款从结构化文本中按列提取数据的在线工具。当处理表格数据、日志文件、CSV/TSV 文本等按列组织的信息时,经常需要提取其中特定列的内容。例如从 tab 分隔的日志中提取 IP 地址列,从空格分隔的数据中提取数值列,或从自定义分隔符的文本中提取特定字段。本工具支持多种分隔符(Tab、逗号、空格、管道符、自定义字符),按列序号提取,支持提取多列、反转列顺序、删除指定列等操作。所有处理在浏览器端完成,数据不会上传。
如何使用文本列提取工具
- 步骤一:粘贴文本数据 — 将包含多列数据的文本粘贴到输入区域。工具会自动分析前几行,智能识别分隔符类型(Tab、逗号、空格等)。
- 步骤二:配置提取规则 — 选择或确认分隔符,指定要提取的列号(如第1列、第3-5列)。可以使用预览功能确认列号是否正确对应了目标数据。
- 步骤三:提取并导出 — 点击提取按钮,结果区域显示提取的列数据。支持复制结果或下载为 CSV/文本文件。
常见使用场景
场景一:从日志中提取 IP 地址
服务器日志通常是空格或 Tab 分隔的多列数据,IP 地址通常在第一列。使用列提取工具选择第1列即可批量提取所有 IP 地址,配合去重工具可以得到唯一的 IP 列表。
场景二:CSV 数据字段筛选
从大型 CSV 数据集中提取特定字段。例如从包含"姓名,邮箱,电话,地址,城市"的 CSV 中只提取邮箱列(第2列)用于邮件发送列表。
场景三:数据格式转换
将 Tab 分隔的数据转为逗号分隔(或反之),或重新排列列的顺序。选择需要保留的列并按目标顺序提取,完成数据格式转换。
技术原理
列提取的核心操作是按行分割后,每行再按分隔符分割为字段数组,取指定索引的元素。String.split() 配合分隔符完成分行分列。需要注意:不同行的列数可能不一致(不规则数据),需处理缺失列的情况;某些字段内可能包含分隔符(如 CSV 中被引号包裹的逗号),需要更智能的解析。
// 列提取核心实现
function extractColumns(text, separator, columns) {
return text.split('\n')
.filter(line => line.trim())
.map(line => {
const fields = line.split(separator);
return columns
.map(col => fields[col - 1] || '') // 列号从1开始
.join(separator); // 输出保持相同分隔符
})
.join('\n');
}
// 示例:从 Tab 分隔的数据提取第1和第3列
extractColumns(data, '\t', [1, 3]);
最佳实践与注意事项
- 确认分隔符类型后再提取——Tab 分隔和空格分隔的结果可能完全不同。
- 注意数据中是否存在引号包裹的字段(如 CSV 的 "Smith, John"),简单 split 会错误分割。
- 列号从 1 开始计数,支持范围选择(如 2-5)和逗号分隔多个列(如 1,3,5)。
- 处理前几行预览数据确认列号对应正确,避免因标题行或注释行导致偏移。
常见问题
Q:工具能处理 CSV 中引号包裹的逗号吗?
A>对于标准 CSV 格式(字段内逗号被双引号包裹,如 "Smith, John"),简单的 split(',') 会错误分割。本工具支持 RFC 4180 CSV 解析模式,正确处理引号内的分隔符。对于简单分隔数据(如 Tab 分隔),使用基础分割即可。
Q:如何处理不同行列数不一致的情况?
A>工具默认将缺失列视为空字符串。如果某行的列数少于指定的列号,该位置输出空值。你也可以启用"跳过不完整行"选项,自动过滤掉列数不足的行。
Q:能重新排列列的顺序吗?
A>可以。在提取列时指定任意顺序即可实现重新排列。例如原始列为 A,B,C,D,输入提取列号 3,1,4 则输出 C,A,D。这是快速完成列重排的有效方法。
Q:如何处理包含中文的对齐文本?
A>如果数据使用空格对齐(非固定分隔符),中文的全角宽度和英文的半角宽度不同会导致对齐错位。建议改用 Tab 或逗号作为分隔符,或使用固定宽度切割模式按字符位置提取。
Q:处理大文件时有性能限制吗?
A>由于在浏览器端运行,通常 10 万行以内可以在 1 秒内完成。超大文件(>50MB)可能导致浏览器卡顿。对于超大数据集,建议使用命令行工具如 awk -F',' '{print $2}' 或 cut -f2。