在perl中将单行转换为多行

时间:2013-11-21 17:32:26

标签: perl

我的文件如下。

ID || DATE || AMOUNT
XX||20130801@@20130901@@20131001@@20131101||100@@200@@300@@400

我希望使用perl输出如下。

xx||20130801||100

xx||20130901||200

xx||20131001||300

xx||20131101||400

请帮我讲解如何使用perl进行转换。

2 个答案:

答案 0 :(得分:1)

perl -F'\|\||@@' -lanE'$.>1 or $" ="||",next; say "@F[0,$_,$_+4]" for 1..4' file

答案 1 :(得分:1)

perl -F'\|\|' -lane '@a=split(/@@/,$F[1]); @b=split(/@@/,$F[2]); print "$F[0]||$a[$_]||$b[$_]" foreach 0..$#a;' file

输出:

ID || DATE || AMOUNT
XX||20130801||100
XX||20130901||200
XX||20131001||300
XX||20131101||400