|
如果我想对一个每行70个字符的文本处理,让它生成每列10个字符,每行6列,并输出字符数怎么弄呀?
如:
- TINHTFGNPVIPFKDGIYFAATEKSNVVRGWVFGSTMNNKSQSVIIINNSTNVVIRACNFELCDNPFFAV
- SKPMGTQTHTMIFDNAFNCTFEYISDAFSLDVSEKSGNFKHLREFVFKNKDGFLYVYKGYQPIDVVRDLP
生成:
- 1 TINHTFGNPV IPFKDGIYFA ATEKSNVVRG WVFGSTMNNK SQSVIIINNS TNVVIRACNF
- 61 ELCDNPFFAV SKPMGTQTHT MIFDNAFNCT FEYISDAFSL DVSEKSGNFK HLREFVFKNK
- 121 DGFLYVYKGY QPIDVVRDLP
----------------------------------------------------------------------------------
fold -w10 urfile |xargs -n6 |awk '{print (NR-1)*60+1,$0}'
1 #!/usr/bin/perl -w
2
3 my ( $column, $character ) = ( 5, 15 ); # ( 6, 10 )
4 my ( $num, $X, $data ) = ( 0, $column * $character );
5 while () { chomp; $data .= $_ }
6 my @split = $data =~ /(.{$character}|.+)/g;
7
8 while ( my @line = splice @split, 0, $column ) {
9 print join "\t", $num++ * $X + 1, @line;
10 print "\n";
11 }
12 ——————————————————————————————————————————
13 my $i = 0;
14 while () {
15 my @line = unpack "A10" x ( length($_) );
16 my @data;
17 for (@line) {
18 next unless $_;
19 print 1, "\t" if $i == 0;
20 $i += length($_);
21 print $_, "\t";
22 print "\n", $i + 1, "\t" if $i % 60 == 0;
23 }
24 }
|
|
|