我有一个包含以下内容的文件:
value1;1;1
value2;2;2
value3;5;5
value4;7;7
value5;1;8
value6;3;10
value7;7;14
第一列包含随机值,第二列包含1到7个有序,第三列只包含连续数字。 是否可以使用perl以下列方式填充此文件:
value1;1;1
value2;2;2
null;3;3
null;4;4
value3;5;5
null;6;6
value4;7;7
value5;1;8
null;2;9
value6;3;10
null;4;11
null;5;12
null;6;13
value7;7;14
谢谢!
答案 0 :(得分:3)
这是一个简单的单行代码:
perl -ple '($m,$n)=/;(\d+);(\d+)$/; while ($l<$n) {print "null;",++$p,";$l" if $l; $l++} $l=$n+1; $p=$m' input
它使用变量($l
)来记住最后一列的最后一个值,如果有间隙,则在输出每一行之前填充它们。
输出:
value1;1;1
value2;2;2
null;3;3
null;4;4
value3;5;5
null;6;6
value4;7;7
value5;1;8
null;2;9
value6;3;10
null;4;11
null;5;12
null;6;13
value7;7;14
答案 1 :(得分:0)
这是一个CSV文件,不是吗?所以,请尝试Text :: CSV_XS模块!解析器! metacpan
中到处都是解析器您不需要在Perl中构建解析器几乎什么也不需要。真!