如何分割CSV文件以使第一列保留?

问题描述 投票:0回答:2

我有以下格式的100K行csv文件:

ID, attribute-1, attribute-2,..

这需要转换为以下格式:

ID, attribute-1
ID, attribute-2
....

我知道可以使用常规剪切并解析每一行来完成。但是,有没有更简单的方法可以做到这一点?请帮助。

linux shell csv
2个回答
0
投票

假设这是简单的csv,在引号或类似内容中没有逗号,这会使事情复杂化,

perl -F, -lane '$c1 = shift @F; print "$c1,$_" for @F' input.csv

应该这样做。取得每一行的第一列,并为每一列打印第一列和当前列。


0
投票

给出

$ cat vivek 
ID1, attribute-1, attribute-2,..
ID2, attribute-1, attribute-2,..
ID3, attribute-1, attribute-2,..
ID4, attribute-1, attribute-2,..

以下内容对您有用吗?

awk -F, '{for(i=2;i<=NF;i++){print $1",",$i}}' vivek
ID1,  attribute-1
ID1,  attribute-2
ID1, ..
ID2,  attribute-1
ID2,  attribute-2
ID2, ..
ID3,  attribute-1
ID3,  attribute-2
ID3, ..
ID4,  attribute-1
ID4,  attribute-2
ID4, ..

迭代每一行中的字段,打印第一行,以及迭代器下面的字段。

© www.soinside.com 2019 - 2024. All rights reserved.