我之前用sed做过这个,但我想知道Perl是如何做到的。
我有一个CSV文件,如下所示:
IFB, Northpole, Alaska, 907-555-5555,,,,
Walmart, Fairbanks, Alaska,,,,,
Chicken, Anchorage, Alaska, 907-555-5555,,,,,
Beef, Somewhere,,,,, Over the Rainbow,,,907-555-5555
etc...
我需要的是删除多余的逗号,而不是分隔值的单个逗号。这意味着我需要删除任何超过1个逗号的出现,无论它出现在文件中的哪个位置 期望的输出:
IFB, Northpole, Alaska, 907-555-5555
Walmart, Fairbanks, Alaska
Chicken, Anchorage, Alaska, 907-555-5555
Beef, Somewhere, Over the Rainbow, 907-555-5555
答案 0 :(得分:0)
这是一个例子:
select()
您还可以将#!/usr/bin/env perl
use strict;
while(<DATA>) {
s/,+[\t ]*/, /g; # Remove extra commas
s/ $//g; # Remove trailing space
print;
}
__DATA__
IFB, Northpole, Alaska, 907-555-5555,,,,
Walmart, Fairbanks, Alaska,,,,,
Chicken, Anchorage, Alaska, 907-555-5555,,,,,
Beef, Somewhere,,,,,Over the Rainbow,,,907-555-5555
etc...
与sed
一起使用Perl:
perl -pe