gpt4 book ai didi

linux - 从 CSV 数据值中删除回车符

转载 作者:太空宇宙 更新时间:2023-11-04 04:55:47 25 4
gpt4 key购买 nike

我使用 LOAD DATA INFILE 语句将数据从管道分隔的 CSV 导入到 MySQL。我使用“\r\n”来终止行。我的问题是每行中的某些数据都有“\r\n”,导致加载错误。我有类似的文件,仅在数据中使用“\n”来指示换行符,这不会导致任何问题。

良好的 CSV 示例

School|City|State|Country\r
Harvard University|Cambridge|MA|USA\r
Princeton University|Princeton|New
Jersey
|USA\r

错误 CSV 示例

School|City|State|Country\r
Harvard University|Cambridge|MA|USA\r
Princeton University|Princeton|New\r
Jersey\r
|USA\r

有没有办法使用 sed、awk 或 perl 来预处理 CSV,以清除列值中多余的回车符?

最佳答案

这是 Perl 中的一种可能的解决方案。它读取一行,如果少于 4 个字段,则继续读取下一行并合并它,直到有 4 个字段。只需将 $number_of_fields 的值更改为正确的数字即可。

#!/usr/bin/perl

use strict;
use warnings;

my $number_of_fields=4;

while(<STDIN>)
{
s/[\r\n]//g;
my @fields=split(/\|/);
next if($#fields==-1);

while($#fields<$number_of_fields-1)
{
my $nextline=<STDIN> || last;
$nextline =~ s/[\r\n]//g;
my @tmpfields=split(/\|/,$nextline);
next if($#tmpfields==-1);
$fields[$#fields] .= "\n".$tmpfields[0];
shift @tmpfields;
push @fields,@tmpfields;
}
print join("|",@fields),"\r\n";
}

关于linux - 从 CSV 数据值中删除回车符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46607729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com