输入示例:
A0021,,Outside state ambulance serv,I,,0,0,,
A4217,,"Sterile water/saline, 500 ml",X,,
A4672,,"Drainage ext line, dialysis",X,,
第一个 sed 命令后的输出示例
sed -i 's/("[^,])[,]([^"]")/\1\2/g' 文件.csv :
A0021,,Outside state ambulance serv,I,,0,0,,
A4217,,"Sterile water/saline, 500 ml",X,,
A4672,,"Drainage ext line dialysis",X,,
最后一个命令后所需的输出:
A0021,,,I,,0,0,,
A4217,,,X,,
A4672,,,X,,
第三列一直给我带来项目中的问题,最简单的解决方案就是简单地删除它,因为它没有必要。逗号应该保留,它应该只有空内容。
我想我需要开发一个sed
命令来删除删除第三列的命令之前的引号中包含的逗号,因为我认为最简单的方法是计算逗号的数量,然后删除之间的所有内容第二个和第三个逗号。
这是 sed 命令,我正在使用删除引号内的逗号,然后再继续清除第三列的内容
答案1
像这样的事情就可以解决问题:
#!/usr/bin/perl
use warnings;
use strict;
use Text::CSV;
my $csv = Text::CSV->new( { binary => 1, eol => "\n" } );
open( my $input, '<', 'test3.csv' ) or die $!;
while ( my $row = $csv->getline($input) ) {
$row->[2] = "";
$csv -> print( \*STDOUT, $row );
}
(您可能想打开一个输出文件并print
改为打开该文件)。