我在csv文件分隔的逗号的第一列中包含所有数据。如何将数据拆分成不同的列(我的意思是每个用逗号分隔的单词应该在不同的单元格中)。
输入(在excel中显示A列):
name,age,city john,21,london michael,25,sydney
输出:A1列包含名称,B1包含年龄,C1城市,A2约翰等
请解释我需要在linux中使用哪个命令
答案 0 :(得分:0)
如果您只是想用管道替换逗号,可以使用以下内容:
sed 's/,/|/g' filename.csv
答案 1 :(得分:0)
使用列命令,如:
column <filename>
或
column -c20 <filename>
使用帮助找到更多选项:
column --help
来源在这里:https://www.lifewire.com/file-contents-in-column-format-linux-4018107
(我在Linux ubuntu 17.04上测试这个命令)
答案 2 :(得分: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