eew , you're shelling out for cut
Here is a oneliner
perl -F: -lane " print qq/-------/ if 1==$.; print join q/|/, @F, qq//
+; print q/--/ x @F, qq//; " < infile > outfile
more verbosely written as
BEGIN { $/ = "\n"; $\ = "\n"; }
LINE: while (defined($_ = <ARGV>)) {
chomp $_;
our(@F) = split(/:/, $_, 0);
print '-------' if 1 == $.;
print join('|', @F, '');
print '--' x @F, '';
}
|