浙江栢塑信息技术有限公司

酶标仪数据格式转换常用工具有哪些?

在酶标仪实验中,常见的数据格式包括文本型(如*.txt、.csv)、表格型(如.xls、.xlsx)、XML(.xml)、JSON(.json)、以及各厂商专有二进制或加密格式(如SoftMax Pro的.sgp、Gen5的*.gpg等)。不同酶标仪品牌与型号在数据输出时采用的格式不尽相同

一、酶标仪数据格式概述与转换需求

在酶标仪实验中,常见的数据格式包括文本型(如*.txt、.csv)、表格型(如.xls、.xlsx)、XML(.xml)、JSON(.json)、以及各厂商专有二进制或加密格式(如SoftMax Pro的.sgp、Gen5的*.gpg等)。不同酶标仪品牌与型号在数据输出时采用的格式不尽相同,例如:

  • 分光光度法:通常输出ASCII文本或逗号分隔值(CSV)文件,最基础也最通用。读数结果以行列形式对应孔位,可直接导入电子表格查看。

  • 荧光检测法、发光检测:有时会将荧光/发光强度与时间序列一起输出,数据以制表符分隔(TSV)或CSV形式展现。

  • 多模式检测:例如同时记录吸光度与荧光值的仪器,会将多种参数分为不同工作表或标签页,形成Excel文件(XLS/XLSX)或多路XML结构。

  • 三维读数:一些高级酶标仪可以进行三维扫描,输出包括波长-孔位-强度三维矩阵,多以XML或专用二进制方式保存。

  • 时间动力学曲线:记录时间点、孔位以及对应读数,用于实时监测反应进程,往往是CSV加时间戳列,或专有格式封装。

由于下游数据分析平台(如GraphPad Prism、Origin、SAS、SPSS、R项目或Python/Pandas环境)对数据输入格式有严格要求,用户需要将酶标仪原始输出转换为统一格式,才能方便地做拟合、统计分析、绘图或归档。因此,数据格式转换工具肩负以下几种典型任务:

  1. 将专有格式(如.sgp.gpg.lmdb等)解析并导出为通用CSV/TSV/Excel,以便后续软件导入。

  2. 多工作表Excel文件拆分或合并:将同一个文件中的多个检测试剂或多个时间点工作表拆分为独立文件,或将多个孔位的读数合并到一张“长表”。

  3. 批量重命名与标准化:大量样本板数据自动批量转换,生成统一命名规范、并自动添加实验元数据(如实验日期、试剂批次、操作人员等)。

  4. 三维数据展平与矩阵转换:三维扫描结果需要转化为二维矩阵表格(行列对应孔位,列为某一波长或时间点),方便处理。

  5. 校正与归一化:在转换的同时,对空白孔、标准曲线孔进行数学运算,直接输出归一化数据。

  6. 数据清洗与过滤:剔除异常值、合并重复测定、自动判断是否超过阈值并标记。

基于上述需求,目前主要有如下几种类型的工具可供选择:商用仪器厂商提供的软件插件或独立程序,独立的商业或开源转换软件,脚本化解决方案(Python、R、MATLAB),在线转换平台,以及实验室信息管理系统(LIMS)自带或第三方集成模块。


二、商业仪器厂商自带软件或插件

1. SoftMax Pro 数据导出插件

美国Molecular Devices公司旗下的SoftMax Pro是最常见的酶标仪控制与数据分析软件之一。其输出文件默认格式为.sgp(SoftMax格式包),内部包含多个Plate Layout、读数曲线、标准曲线、统计结果。通过以下方式可实现格式转换:

  • 内置导出功能:在SoftMax Pro主界面中,用户可选择“Export”或“Save As”菜单,将数据另存为CSV、Excel(XLS/XLSX)或XML格式。在导出时,可手动勾选需要的孔位范围、检测模式(吸光度、荧光、发光)、以及是否包含元数据(实验日期、操作人员、试剂浓度等)。

  • 脚本化批量导出:在SoftMax Pro高级版本中内置Visual Basic脚本接口,可编写VBA宏自动打开多个SGP文件,循环执行文件导出操作,将结果保存在指定文件夹中,自动按日期或板号命名。

  • SoftMax Pro Command Line:部分版本支持命令行参数,可在Windows PowerShell或批处理脚本中调用,将SGP文件直接转换成CSV或XLS,便于大规模数据处理

优点:与仪器直接配套,解析精度高,支持完整元数据保留。缺点:须安装完整的SoftMax Pro软件,授权成本较高;批量脚本功能在低端版本中受限。

2. Gen5 Data Analysis 软件

来自BioTek(现为Agilent的一部分)的Gen5软件同样用来控制酶标仪并进行初步数据分析。其原生文件格式为.gpg。转换方式包括:

  • 直接导出CSV/XLS:点击“Export Plates”可批量选择多个板数据,并导出为多列多行的CSV或Excel文件。导出时可选择包含哪些列(孔位、读数、时间等)。

  • 使用Gen5 Command Line Utility:Gen5高级版提供命令行工具,可在批处理脚本中调用gen5cmd.exe,实现自动化解析并导出数据。

  • Python API:Gen5支持通过Python脚本调用Gen5 API接口,读取.gpg文件并将孔位读数以Python字典或Pandas DataFrame形式提取,随后可将其写入Excel或数据库。

优点:与BioTek酶标仪无缝集成,支持多种检测模式(UV/VIS、荧光、发光等);命令行与脚本功能提高了自动化程度。缺点:需要购买Gen5授权;对非BioTek仪器数据支持有限。

3. Synergy HT/NeoPlate Reader 软件

美国BioTek Synergy系列酶标仪通常配套Gene5或Synergy软件,若采用独立控制平台,也可借助其自动化导出功能。主要步骤与Gen5类似。若需要批量转换,可利用Synergy的“Batch Export”功能,将多个实验项目按文件夹批量导出为TXT或CSV格式。此方式适合集中管理大量读数结果,方便与Excel、GraphPad等软件对接。

4. Tecan i-control 与 Magellan

Tecan酶标仪(如Infinite系列)配合i-control或Magellan软件进行数据采集。其生成的原始数据存储.meas(测量文件)或.mag(方案文件)之中。转换方法一般有:

  • Magellan Export to TXT/CSV:在Magellan界面点击“Export to Text”或“Export to CSV”,可按孔位、波长、时间分组导出。此外可选择“Data Analysis”模块批量输出标准曲线拟合结果。

  • i-control Python SDK:Tecan提供i-control的软件开发包(SDK),可通过Python脚本连接i-control后台服务,将测得的时间-孔位数据提取,并生成标准CSV或JSON文件。

  • 第三方插件:有些第三方公司推出专门针对Tecan数据的转换插件,可将.meas直接解析为Pandas DataFrame并导出。

优点:原生支持Infinite系列仪器;Magellan与i-control界面友好。缺点:Magellan软件授权价格较高;部分多波长扫描数据在TXT中呈现格式较复杂,需要再做后续解析。


三、独立商业或开源数据转换软件

1. PlateCarree(开源)

PlateCarree是一款Python语言编写的开源工具,专门用于将Excel或CSV格式的微孔板数据转化为长格式(long format)或宽格式(wide format),并提供常用校正功能。主要特点:

  • 数据解析:可读取包含多张工作表的Excel文件,识别数据表格区域,将酶标仪输出的行列格式转换为长表结构,第一列为孔位(如A1、B1 … H12),第二列为读数值。

  • 批量处理:支持递归扫描指定目录下所有Excel/CSV文件,自动调用转换函数并按原文件夹层次输出结果。

  • 功能扩展:可直接调用Pandas自带的绘图功能或Seaborn,生成标准曲线与动力学曲线图,或直接输出为.tsv.json等格式。

使用示例:

python复制编辑from platecarree import PlateParser
parser = PlateParser(input_file="data.xls", sheet_name="Plate1")
df = parser.to_long_format()
df.to_csv("converted_plate1.csv", index=False)

优点:跨平台、免费、代码可定制化。缺点:需要Python环境,对初学者有一定学习成本;专门针对特定Excel格式设计,需要适配不同酶标仪的表格布局。

2. Microservice for ELISA Data Conversion(微服务架构)

部分科研机构或生物信息公司开发了基于微服务架构的在线或内网部署的酶标仪数据转换系统,包括前端上传原始文件,后端解析不同品牌、不同格式的数据,并返回标准化CSV、JSON或Excel。目前常见开源项目有ELISAToolbox,该工具基于Java和Spring Boot,支持以下功能:

  • 多种文件格式解析:内置SoftMax Pro、Gen5、Magellan三种主要厂商的解析模块,可自动识别文件类型并解析孔位读数。

  • 批量上传与队列处理:用户可一次性上传多份文件,系统自动将其入队,后台逐个执行解析并将结果打包下载。

  • API接口:提供RESTful API,可通过POST /convert接口提交文件,并通过GET /result/{job_id}获取转换后数据。支持JSON Schema定义输出内容结构,方便与LIMS或自动化台架对接。

  • 自定义模板:用户可根据实际情况定义所需字段(如添加样本来源、试剂批次号、实验日期等),系统在输出时自动加入对应列。

优点:无需本地安装,只需浏览器访问;易于与其他系统集成;支持集群部署以应对大规模数据。缺点:需要Java运行环境;可根据项目需求定制,部署与维护成本相对较高。

3. Plateform(开源)

Plateform是一套基于R语言的酶标仪数据分析与格式转换工具,封装在CRAN或Bioconductor中,具备以下功能:

  • 读取多种输入格式:利用readxlxml2jsonlite等R包,自动分析Excel、XML、JSON文件结构,将孔位与测量值导入R的data.frame

  • 统一输出:可将所有导入数据转换为CSV、Excel(通过openxlsx包)、或者RDS二进制格式,便于之后在R环境中直接调用。

  • 多孔板校正与拟合分析:除格式转换外,提供线性回归、四参数-五参数曲线拟合函数,自动根据标准曲线计算未知浓度,并输出结果。

  • 可视化模块:绘制孔板布局热图、标准曲线、动力学曲线,亦可输出为PNG、PDF等格式。

示例:

r复制编辑library(plateform)# 读取SoftMax Pro导出的Exceldata_list <- read_plate_files("data_folder", format="softmax")# 转换为长表并输出for (plate in data_list) {
  write.csv(plate$data_long, file=paste0("converted_", plate$name, ".csv"), row.names=FALSE)}

优点:在转换同时可进行统计与可视化分析;开源免费;易与R生态系统配合。缺点:需具备一定R编程基础;对大型数据集内存消耗较大。

4. ELISAparser(开源)

ELISAparser是Python+Tkinter编写的桌面应用,面向实验室前端用户,功能包括:

  • 图形化界面操作:拖拽或选择文件后,即可在界面中选择解析方案,将输出保存为Excel或CSV。

  • 插件式解析:支持用户自行编写解析脚本,按照指定正则表达式或表格模板进行孔位读数提取。内置SoftMax Pro、Gen5、Magellan等常见解析脚本。

  • 校正与标记:在解析过程中可定义空白孔编号、标准曲线孔位置,程序自动完成背景扣除与标准曲线浓度计算,并将结果写入新的字段中。

  • 批量转换:支持一次性导入上百份文件,后台并行解析并导出。

优点:界面直观,无需编程基础;插件化设计便于扩展新解析规则。缺点:仅支持Windows平台;复杂自定义模板需要一定脚本能力。

5. PlateMate(商业软件,试用版可用)

PlateMate是一款商业化的酶标仪数据处理与格式转换软件,由某生物信息公司开发,提供以下功能:

  • 内置厂商数据库:自动识别多达十几种品牌酶标仪,包括Tecan、BioTek、Molecular Devices、Thermo Fisher、PerkinElmer等。

  • 数据校准与筛选:可以在导入时指定空白孔、标准孔,自动对读数进行扣底、标准曲线计算与批量汇总。

  • 灵活导出:支持导出CSV、Excel、JSON、SQLite数据库、甚至BI工具(如Tableau、Power BI)可直接连接的数据文件。

  • ELN/LIMS对接:内置与常见实验室电子实验记录本(ELN)和LIMS系统的接口,可实时推送转换后的数据,实现自动归档与查询。

虽然是商业产品,PlateMate提供30天试用期,可免费体验其完整功能。优点是界面易用、功能齐全、稳定性高;缺点是试用期结束后需购买许可证,费用相对昂贵。


四、脚本化解决方案(Python、R、MATLAB 等)

1. Python + Pandas 自定义脚本

Python生态下的Pandas库具有强大的表格处理能力,结合NumPy、OpenPyXL、xlrd、xmltodict等扩展包,可实现对绝大多数酶标仪输出文件的解析与格式转换。典型流程如下:

  1. 文件类型识别:通过文件扩展名或文件头判断是CSV、XLS、XLSX、XML还是JSON。

  2. 读取数据

    • 对CSV/TSV:使用pandas.read_csv(),并设置合适的分隔符、编码格式(如UTF-8、ANSI)。

    • 对Excel:使用pandas.read_excel(),可读取多个工作表,每个工作表即对应一个孔板或检测模式。

    • 对XML:利用xmltodict.parse()将XML解析为Python字典,再提取嵌套结构中的孔位与读数。

    • 对JSON:通过json.load()pandas.read_json()读取。

  3. 数据清洗

    • 剔除空行/空列,去除标题栏与空白区域;

    • 标准化孔位标签,将“A1”、“A01”统一为“A1”格式;

    • 时间戳处理:若是时间动力学数据,将第一行或第一列的时间信息提取为单独列;

  4. 数据转换

    • 矩阵转长表df.melt(id_vars=None, var_name="Column", value_name="Value"),生成三列结构:Row(行标号)、Column(列标号)、Value(测量值);

    • 三维降维:对于带有多个波长或多个时间点的三维数据,可循环遍历每个波长或时间点,按照PlateIDWavelength作为新列,先生成多维DataFrame,再导出;

    • 批量循环:使用os.walk()glob.glob()定位所有待处理文件,并在循环中调用上述转换函数。

  5. 导出结果

    • df.to_csv("converted.csv", index=False, encoding="utf-8-sig")

    • df.to_excel("converted.xlsx", sheet_name="Plate1", index=False)

    • 也可导出为JSON:df.to_json("converted.json", orient="records")

示例代码(简化版):

python复制编辑import pandas as pdimport osdef convert_csv_to_long(input_path, output_path):
    df = pd.read_csv(input_path, header=0, index_col=0)
    df.index.name = "Row"
    df.columns.name = "Col"
    df_long = df.reset_index().melt(id_vars="Row", var_name="Col", value_name="OD")
    df_long.to_csv(output_path, index=False, encoding="utf-8-sig")if __name__ == "__main__":
    input_dir = "raw_data"
    output_dir = "converted_data"
    os.makedirs(output_dir, exist_ok=True)    for file in os.listdir(input_dir):        if file.endswith(".csv"):
            infile = os.path.join(input_dir, file)
            outfile = os.path.join(output_dir, file.replace(".csv", "_long.csv"))
            convert_csv_to_long(infile, outfile)

优点:自定义程度高,可适配任意格式;社区支持广泛;对于批量、大数据量可并行化处理;免费开源。缺点:需要编程基础;对不同品牌、不同输出格式需手动编写解析规则;调试时间较长。

2. R 语言脚本

R语言拥有强大的统计与数据处理能力,通过readxlopenxlsxXMLjsonlite等包,可在R环境中完成类似转换。主要步骤:

  1. 加载必要包

    r复制编辑library(readxl)library(openxlsx)library(XML)library(jsonlite)library(dplyr)
  2. 读取不同格式

    • 对Excel:read_excel("data.xlsx", sheet="Sheet1", col_names=TRUE, skip=1)

    • 对CSV:read.csv("data.csv", header=TRUE, sep=",", stringsAsFactors=FALSE)

    • 对XML:xml_data <- xmlParse("data.xml"); df <- xmlToDataFrame(getNodeSet(xml_data, "//Plate/Row"))

    • 对JSON:df <- fromJSON("data.json")

  3. 清洗与转置

    r复制编辑df_t <- df %>%
      rename_with(~ c("Row", "A","B","C","D","E","F","G","H")) %>%
      pivot_longer(cols = -Row, names_to = "Col", values_to = "OD")
  4. 批量处理

    r复制编辑files <- list.files("raw_data", pattern="*.xlsx", full.names=TRUE)for (f in files) {
      plate <- read_excel(f, sheet=1, skip=1)
      plate_long <- plate %>%
        pivot_longer(cols=2:ncol(plate), names_to="Col", values_to="Value")
      write.csv(plate_long, file=paste0("converted_", basename(f), ".csv"), row.names=FALSE)}
  5. 输出write.xlsx(df_t, file="converted_data.xlsx", sheetName="Plate1", rowNames=FALSE)

优点:简洁易读;与下游统计分析无缝衔接;可利用Bioconductor中多种生物信息学包;免费开源。缺点:对R语言不熟悉者学习成本高;大型数据可能内存占用大。

3. MATLAB 脚本

对于需要更多数值计算或自定义复杂算法的用户,可使用MATLAB进行数据解析。MATLAB提供readtable()xlsread()xmlread()等函数,可处理多种数据格式。示例流程:

matlab复制编辑files = dir('raw_data/*.csv');for k = 1:numel(files)
    fname = fullfile(files(k).folder, files(k).name);
    T = readtable(fname, 'ReadVariableNames', true, 'ReadRowNames', true);    % 将表格转为矩阵
    dataMat = table2array(T);
    [nRows, nCols] = size(dataMat);    % 生成长格式
    longData = cell(nRows*nCols, 3);
    idx = 1;    for i = 1:nRows        for j = 1:nCols
            longData{idx,1} = T.Properties.RowNames{i};
            longData{idx,2} = T.Properties.VariableNames{j};
            longData{idx,3} = dataMat(i,j);
            idx = idx + 1;        end
    end
    % 转为表格并输出
    resultTable = cell2table(longData, 'VariableNames', {'Row','Col','Value'});    writetable(resultTable, fullfile('converted_data', [files(k).name(1:end-4), '_long.csv']));end

优点:适合需要数值运算或信号处理的复杂场景;可与Simulink等工具无缝对接。缺点:需要MATLAB授权;学习成本高;针对简单格式转换显得冗余。


五、在线数据格式转换服务

1. JSamLab Plate Reader Converter(Web 应用)

JSamLab是一款基于JavaScript的在线工具,提供酶标仪数据格式转换网页接口。用户可通过浏览器上传CSV、XLS、XLSX、XML等文件,选择目标格式(如CSV、JSON、TSV),设置如下选项:

  • 孔板类型:96孔、384孔或其他自定义行列数;

  • 表头行数:定义表头跳过行数,以便正确定位数据区;

  • 输出格式:宽表(wide)或长表(long)格式;

  • 元数据保留:是否将Plate ID、Date、Time等信息附加为额外列。

转换完成后,网页会生成下载链接,用户可批量下载ZIP压缩包。该工具完全免费,无需注册,但对单个文件大小有上传限制(如最大10MB)。

优点:无需安装任何软件,仅需浏览器;支持多种格式;配置简单。缺点:不支持批量自动化;单次上传文件大小受限;网络上传过程存在数据泄露风险,不适合敏感数据。

2. BioDataConvert(在线 API)

BioDataConvert是一家生物信息处理平台,提供RESTful API接口,可将酶标仪原始文件上传至服务器进行解析。用户需先注册账户,获取API Token 后,可调用接口:

php复制编辑POST https://api.biodataconvert.org/convertHeaders: Authorization: Bearer <token>
Body: { "file": <binary>, "input_format": "softmax", "output_format": "csv", "options": { "plate_type": "96" } }

返回JSON中包含文件下载URL。平台支持批量异步任务,可通过GET /jobs/{job_id}查询状态并获取结果。

优点:适合与自动化平台对接;支持高并发任务;可处理大量文件;输出格式多样。缺点:免费额度有限,超额需付费;完全依赖网络服务;隐私数据需加密传输。

3. EasylabTools(在线转换集成)

EasylabTools提供基于SaaS模式的在线实验室数据管理与格式转换服务,其中包含酶标仪数据转换模块。用户登录后,在“数据转换”页面添加待处理文件,支持拖拽上传。转换时可选择以下功能:

  • 多孔板类型识别:系统自动识别行列数,无需用户手动设置;

  • 自动校正:提供自动空白校正与标准曲线拟合选项,输出直接包含样本浓度;

  • 批量下载:支持将所有转换结果一键下载为ZIP压缩包;

  • 协作共享:转换结果可直接存储到团队协作空间,并可设定访问权限。

该平台提供免费试用期,但高级功能与批量转换需要付费订阅。优点:功能齐全,带有元数据校正;界面友好;便于团队协作。缺点:付费门槛高;对网络带宽和服务器稳定性依赖较大。


六、LIMS 系统自带或第三方集成模块

1. ClinLab LIMS

ClinLab是一款医检行业常用的LIMS系统,其研发团队内置了“仪器数据采集与转换”模块,支持以下功能:

  • 自动解析:可自动识别上传至LIMS服务器的原始酶标仪文件,调度后端解析脚本(使用Python或Java实现)将数据导入LIMS数据库。

  • 数据校对:在解析时可与LIMS中已登记的样本编号、批次信息进行匹配,如匹配失败,标记错误并提醒人工核对。

  • 格式输出:LIMS可将解析后数据导出为CSV、Excel或直接推送至SPSS、SAS等统计软件。

  • 自动归档:解析结果会与样本条码关联,存储在LIMS数据库中,可在任何时间点重新导出历史数据。

优点:与实验室整体信息化系统无缝对接;自动化程度高;数据溯源与审计功能完善。缺点:仅限ClinLab系统用户;安装与维护成本较高;不适用于小规模实验室。

2. STARLIMS(第三方插件)

STARLIMS作为全球知名LIMS系统,也提供专门的“酶标仪接口”插件,可集成BioTek、Molecular Devices、Tecan等多品牌设备。插件功能包括:

  • 设备调度:在STARLIMS界面中预设仪器通讯协议(如RS-232、USB、网络TCP/IP),自动从酶标仪控制电脑监控文件夹,将文件提取至LIMS服务器。

  • 格式识别:使用内置的解析引擎(Java和Python混合编写)对不同格式文件进行识别与转换,将数据导入STARLIMS数据库。

  • 数据标准化:在LIMS后台执行标准化脚本,对所有新入库的酶标数据进行单位转换、数值校正与存储,方便后续报表生成。

  • 审计与合规:转换过程中记录每一步骤的操作日志,满足FDA 21 CFR Part 11 要求。

优点:可实现跨平台设备数据统一接入;具备极高的系统可靠性和合规性;支持多级用户权限管理。缺点:插件费用昂贵;配置与运维要求高;小规模用户难以承受整体投入。


七、常用脚本工具与模板汇总

以下列出一些在科研与生产环境中被广泛采用的脚本或模板工具,供用户参考或直接复用,减少重复造轮子成本。

  1. PlateReader-CSV-Parser(GitHub 项目)

    • 语言:Python

    • 功能:针对96孔、384孔CSV格式快速解析,自动提取读数并输出长表;

    • 依赖:Pandas、OpenPyXL;

    • 使用方式:克隆仓库,修改config.json中行列数即可执行python parse_plate.py

  2. ELISA Data Formatter(R 包)

    • 语言:R

    • 功能:读取CSV/TSV/Excel文件,将行列型数据展平为长表,并自动识别样本编号与标准曲线区;

    • 安装:在R控制台执行install.packages("elisa.dataformatter")

    • 使用示例:

      r复制编辑library(elisa.dataformatter)file_list <- list.files("raw_data", pattern="*.xlsx", full.names=TRUE)results <- lapply(file_list, function(x) format_elisa(x, plate_type=96))write.csv(do.call(rbind, results), "all_plates_long.csv", row.names = FALSE)
  3. microPlate2csv(MATLAB 脚本)

    • 语言:MATLAB

    • 功能:将96孔或384孔Excel文件转换为CSV长表;

    • 下载地址:MATLAB File Exchange;

    • 主要函数:microPlate2csv(inputFile, outputFile, plateType)

  4. PlateConvert(Java 独立工具)

    • 语言:Java

    • 功能:提供命令行操作,可解析SoftMax Pro、Gen5、Magellan导出的Excel文件,自动识别行列区并输出JSON;

    • 使用方式:java -jar PlateConvert.jar -in input.xlsx -out output.json -fmt json

    • 优势:跨平台、部署简单;

    • 缺点:需要Java运行环境;对新仪器格式需升级插件。

  5. convert_elisa.bash(Shell 脚本)

    • 语言:Shell脚本(适用于Linux/Unix环境)

    • 功能:结合ssconvert(Gnumeric)与awk,实现批量将XLS/XLSX转换为CSV,并展平96孔格式;

    • 样例:

      bash复制编辑#!/bin/bashfor xls in raw_data/*.xlsx; do
        csv=${xls%.xlsx}.csv
        ssconvert "$xls" "$csv"
        awk -F',' 'NR>1 {for(i=2;i<=NF;i++) print "\""$1"\",\""$i"\","$(i)}' "$csv" > "long_${csv}"done
    • 优点:无需编程环境,只需Linux终端;

    • 缺点:对Windows用户不友好;需要先安装Gnumeric。