我将第一列中的所有数据以csv文件分隔的逗号分隔。我怎样才能将数据分成不同的列(我的意思是每个用逗号分开的单词应该在不同的单元格中)。将文本拆分为csv中的不同列
输入(示出了在Excel中的列):
name,age,city john,21,london michael,25,sydney
输出:A1列包含名称,B1包含年龄,C1城市,A2约翰等
请说明哪一个命令我需要在linux中使用
我将第一列中的所有数据以csv文件分隔的逗号分隔。我怎样才能将数据分成不同的列(我的意思是每个用逗号分开的单词应该在不同的单元格中)。将文本拆分为csv中的不同列
输入(示出了在Excel中的列):
name,age,city john,21,london michael,25,sydney
输出:A1列包含名称,B1包含年龄,C1城市,A2约翰等
请说明哪一个命令我需要在linux中使用
如果您正在寻找用管道替换逗号,您可以使用下面的代码:
sed 's/,/|/g' filename.csv
使用列命令,如:
column <filename>
或
column -c20 <filename>
使用帮助到findout更多选项:
column --help
源是在这里:https://www.lifewire.com/file-contents-in-column-format-linux-4018107
(I测试这个命令在Linux的ubuntu 17.04)
在这种情况下是方便的使脚本而不是一个命令行并使用该格式中给定样式的输出的特定功能;然后将其用于不同的线路。
下面是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
是否要*提取*列信息,或者只是想目前还不清楚*重新格式化一个文本文件。你没有表现出任何努力,也没有代码。对不起,但这种问题,如果脱离本网站的话题。你真的应该阅读[问]并用最少的必要信息编辑问题。 –