2017-08-02 33 views
-1

我将第一列中的所有数据以csv文件分隔的逗号分隔。我怎样才能将数据分成不同的列(我的意思是每个用逗号分开的单词应该在不同的单元格中)。将文本拆分为csv中的不同列

输入(示出了在Excel中的列):

name,age,city 
john,21,london 
michael,25,sydney 

输出:A1列包含名称,B1包含年龄,C1城市,A2约翰等

请说明哪一个命令我需要在linux中使用

+1

是否要*提取*列信息,或者只是想目前还不清楚*重新格式化一个文本文件。你没有表现出任何努力,也没有代码。对不起,但这种问题,如果脱离本网站的话题。你真的应该阅读[问]并用最少的必要信息编辑问题。 –

回答

0

如果您正在寻找用管道替换逗号,您可以使用下面的代码:

sed 's/,/|/g' filename.csv 
0

在这种情况下是方便的使脚本而不是一个命令行并使用该格式中给定样式的输出的特定功能;然后将其用于不同的线路。

下面是Perl中的解决方案恰好处理的问题问:

#!/usr/bin/perl 

my $myformat="%-30s%5s%-30s%5s%-30s\n"; 
my $pad="-"x30; 

sub myprint { 
    my $format = shift; 
    my $separator = shift; 
    my @final; 
    foreach my $x (@_) { 
     push(@final,$x,$separator); 
    } 
    pop @final; # delete last separator 
    printf $format,@final; 
} 

my $l=0; 
while(<>) { 
    chomp; 
    next if($_ eq ""); 
    $l++; 
    myprint($myformat," | ",split(/,/)); 
    if($l==1) { 
     myprint($myformat,"--|--",$pad,$pad,$pad); 
    } 
} 

然后使用它:

# cat my_input_file.txt | perl myscript.pl