我有一个具有以下结构的大型csv文件:
col1,col2,codes
1,2,aaa__bbb
2,4,aaa__eee
3,4,ccc
第3列被编码为三个以'__'分隔的字符。
我想创建一个新的csv,它为列代码的每个组件复制行。结果应类似于:
col1,col2,codes
1,2,aaa
1,2,bbb
2,4,aaa
2,4,eee
3,4,ccc
这是一个相当大的文件(大约10G)。我想在不使用编程语言的情况下执行此bash(awk?)。实际文件约有3000列。
答案 0 :(得分:0)
遵循awk命令会产生所需的结果。
awk 'BEGIN{FS=OFS=","}{split($NF,a,/__/);for(i in a){$NF=a[i];print}}' file
答案 1 :(得分:-1)
您可以使用Perl单线版
$ cat joseph.txt
col1,col2,codes
1,2,aaa__bbb
2,4,aaa__eee
3,4,ccc
$ perl -F, -lane ' if($.>1) { print "$F[0],$F[1],",$_ for(split("__",$F[2])) } ' joseph.txt
1,2,aaa
1,2,bbb
2,4,aaa
2,4,eee
3,4,ccc
$