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

如何用Perl脚本合并CSV列并添加自定义值?

Perl脚本处理CSV新增列

方法一:使用Text::CSV模块(推荐,适配复杂CSV场景)

首先通过CPAN安装Text::CSV模块:

cpanm Text::CSV
# 或用cpan命令
cpan Text::CSV

创建如下Perl脚本:

use strict;
use warnings;
use Text::CSV;

# 初始化CSV处理器,兼容含特殊字符的CSV
my $csv = Text::CSV->new({
    binary => 1,
    auto_diag => 1,
});

# 打开输入、输出文件
open my $in_fh, '<', 'input.csv' or die "无法打开输入文件: $!";
open my $out_fh, '>', 'output.csv' or die "无法打开输出文件: $!";

# 逐行处理CSV内容
while (my $row = $csv->getline($in_fh)) {
    my ($first_name, $last_name) = @$row;
    # 将全大写的姓转为首字母大写格式(匹配预期输出的Doe)
    my $formatted_last = ucfirst(lc($last_name));
    # 生成合并后的完整姓名
    my $full_name = "$first_name $last_name";
    # 性别字段(此处固定为man,可按需扩展判断逻辑)
    my $gender = 'man';
    
    # 写入包含新列的行到输出文件
    $csv->print($out_fh, [$first_name, $formatted_last, $full_name, $gender]);
    print $out_fh "\n";
}

close $in_fh;
close $out_fh;

方法二:简单文本处理(仅适用于无特殊字符的CSV)

若无法安装模块,可使用基础字符串处理实现(注意:字段含逗号、引号时会出错):

use strict;
use warnings;

open my $in_fh, '<', 'input.csv' or die "打不开输入文件: $!";
open my $out_fh, '>', 'output.csv' or die "打不开输出文件: $!";

while (my $line = <$in_fh>) {
    chomp $line;
    my ($first_name, $last_name) = split /,/, $line;
    my $formatted_last = ucfirst(lc($last_name));
    my $full_name = "$first_name $last_name";
    my $gender = 'man';
    
    # 按预期格式拼接新行并写入
    print $out_fh "$first_name, $formatted_last, $full_name, $gender\n";
}

close $in_fh;
close $out_fh;

使用步骤

  1. 将原始CSV保存为input.csv,放在脚本同目录下
  2. 运行脚本:perl csv_process.pl
  3. 处理后的结果会保存在output.csv中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:30:58