App-Bin4TSV
view release on metacpan or search on metacpan
scripts/collen view on Meta::CPAN
#!/usr/bin/perl
use 5.014 ; use warnings ; # 5.001ã ã£ã
use feature qw[ say ] ;
use Time::HiRes qw [ gettimeofday tv_interval ] ;
my ${ dt_start } = [ gettimeofday ] ;
use Term::ANSIColor qw[ :constants ] ; $Term::ANSIColor::AUTORESET = 1 ;
END{ $0 =~ s/.*\///;say STDERR DARK BOLD ITALIC YELLOW sprintf "\t--- %0.6f sec calculation ($0)." , tv_interval ${ dt_start } } ;
use Getopt::Std ; getopts '1cC:f:i:lrs:uv=!^*:@' , \my%o ; # 5.014 ã§ä½åº¦ãå®è¡æ¸ã¿
use Encode qw[ decode_utf8 encode_utf8 ] ;
eval 'use Text::VisualWidth::UTF8 qw[ width ] ; 1 ' or die 'Installing Text::VisualWidth::UTF8 is necessary.' if $o{v} ;
use List::MoreUtils qw[ firstidx lastidx ] ;
no warnings ;
* charlen = $o{v} ? * Text::VisualWidth::UTF8::width : sub { length $_[0] } ;
use warnings ;
sub mainproc ; # ã¡ã¤ã³ã®å¦ç
$| = 1 if $o{'!'} ; # ãªã¼ããã©ãã·ã¥ã®è¨å®
my $i = do { $o{i} //= "\t" ; eval qq[qq[$o{i}]] } ; # åºåãæåã®æå®å¦ç
my $o = defined $o{f} ? do { $o{f} =~ m/^(\d*)(.*)$/ ; eval qq[qq[$2]] } : $i ; # åºåã®åºåãæå
mainproc ;
exit 0 ;
## ã¡ã¤ã³ã®å¦ç
sub mainproc {
# -l 0 ã§ æ¹è¡æåãã¨ãã
* preProcN = $o{l}//'' eq '0' ? sub { chomp } : sub { } ; # æ¹è¡æåãåããã©ããã
# -u ã§ utf8 ã¨ã¿ãªãã-rã§ chompããªããä¸è¨ã§2x2=4éãã®å¦ç
* preProcU = $o{u} ? sub { $_ = decode_utf8 $_ } : sub { } ;
# -s str ã§ç©ºç½ã«é¢ããå¦ç SpaceTreatMent
* sptr = defined $o{s} ? $o{s} eq '0' ? sub { s/\s//gr } : sub { s/\S//gr } : sub { $_ } ; # éç ´å£ãã©ã°$_
# -l ã¯è¡å
¨ä½ã®é·ã, -cã¯åè¡ä¸ã®åã®æ¬æ°, ãããæå®ããªãã¨ãã«ãããããã®ã»ã«ã®æååé·ã
* mainTreat = defined $o{l} ? sub{ & charlen ( & sptr ($_) ) } :
sub{ chomp ; map { & charlen($_) } map{ & sptr } split /$i/,$_,-1 } ; # åç´ã«åã»ã«ã®æååé·ããç®åºã
$o{C} .= '1' if $o{c} ;
* colcnt = defined $o{C} ?
$o{C} eq '0' ? sub { @_= scalar grep { $_ eq '0' } @_ } :
$o{C} =~/^(0-|-0)$/ ? sub { @_ = scalar grep { $_ ne '0' } @_ } :
$o{C} =~ /^0be$/i ? sub { @_ = ( ( 1 + firstidx { $_ eq '0'} @_ ) , (1 + lastidx { $_ eq '0'} @_ ) )} : # end or finish
$o{C} =~ /^0[b]$/i ? sub { @_ = 1 + firstidx { $_ eq '0'} @_ } : # end or finish
$o{C} =~ /^0[e]$/i ? sub { @_ = 1 + lastidx { $_ eq '0'} @_ } : # start or begin
$o{C} =~ /^-0be$/i ? sub { @_ = ( ( 1 + firstidx { $_ ne '0'} @_ ) , (1 + lastidx { $_ ne '0'} @_ ) )} : # end or finish
$o{C} =~ /^-0[b]$/i ? sub { @_ = 1 + firstidx { $_ ne '0'} @_ } : # end or finish
$o{C} =~ /^-0[e]$/i ? sub { @_ = 1 + lastidx { $_ ne '0'} @_ } : # start or begin
sub { @_ = ( scalar @_ ) } : sub { } ;
* incOrg = $o{1} ? $o{u} ? sub { chomp ; $_ = encode_utf8 $_ ; push @_ , "|$_" } : sub { chomp ; push @_ , "|$_" } : sub { } ; # -1 ã§å
ã®å
¥åãåºã
* incFNa = $o{'@'} ? sub { push @_ , $ARGV } : sub { } ; # -@ ã§ä¸ãããããã¡ã¤ã«åãåºã
# åºåãåºå®é·ã«ããå ´åã®å¦çã
* fmtwdt = defined $o{f} && $o{f}=~/^(\d+)/ ?
do { my $d = $1 ; sub { grep { $_ = sprintf "%$d".'d' , $_ ; $_ = "*" x $d if length $_ > $d } @_ } } :
sub { } ;
print do { my $t = <> } if $o{'='} ; # -= ã§å
é è¡ãã¾ããã®ã¾ã¾åºåãã¦ãã¡ã¤ã³ã®å¦ç対象ã¨ããªãã
while ( <> ) {
& preProcN ; # æ¹è¡æåã®å¦ç
& preProcU ; # UTF8ã«é¢ããå¦ç
#& sptr ;
#& preProcS ; # ç©ºç½æåã«ã¤ãã¦ã®å¦ç
@_ = & mainTreat ;
& colcnt ; # æ¡ä»¶ã«ãã£ãåã®æ°ãæ°ãããããªå¦ç -cãæå®ããã¦ããå ´åã«ã
& incFNa ; #ãã¡ã¤ã«åãæ«å°¾ã«ä»å
& fmtwdt ;
& incOrg ; # å
¥åããæååãæ«å°¾ã«ä»å
say join $o , @_ ;
say "^\t$ARGV" if eof && $o{'^'} ;
#do { $| = 1 ; print '' ; $|= 0 } if $. % $o{'*'} == 1 ;
}
} ;
## ãã«ãã®æ±ã
sub VERSION_MESSAGE {}
sub HELP_MESSAGE {
use FindBin qw[ $Script ] ;
$ARGV[1] //= '' ;
open my $FH , '<' , $0 ;
while(<$FH>){
s/\$0/$Script/g ;
print $_ if s/^=head1// .. s/^=cut// and $ARGV[1] =~ /^o(p(t(i(o(ns?)?)?)?)?)?$/i ? m/^\s+\-/ : 1;
}
close $FH ;
exit 0 ;
}
######
#
# widths
# 2015.02 - 2015.05 ä¸é寿ä¹
# 2019.10.08 大ããæãå ããã
#####
=encoding utf8
=head1
$0
å
¥åãã¼ã¿ãåè¡ãåºåãæåãã¨ã«åºåã£ã¦ãæåã®é·ãã«å¤æãã¦åºåããã
è¡æ«ã®æ¹è¡æåã¯ç¹ã«ãªãã·ã§ã³ã§æç¤ºã®ãªãéããé·ãè¨ç®ã®å¯¾è±¡ã§ã¯ãªãã
ãªãã·ã§ã³ :
-i str : åºåãæåã®å¤æ´ã
-l 0 : åè¡ã®å
¨ä½ã®é·ããç®åºãè¡æ«æåãå«ããªãã
-l + : åè¡ã®å
¨ä½ã®é·ããç®åºãè¡æ«æåãå«ããé·ãã¨ããã
-s 0 : ç©ºç½æåãé¤å»ãã¦å¦çãããi.e. éç©ºç½æåã®ã¿ãå¦ç対象
-s 1 : éç©ºç½æåãé¤å»ãã¦å¦çããã i.e. ç©ºç½æåã®ã¿ãå¦ç対象ã(1ã®é¨åã¯0以å¤ã®ä½ã§ãè¯ã)
-u : utf-8 ã¨ã¿ãªãã¦ãé·ããè¨ç®ãããããã§ãªããã°ãåç´ãªãã¤ãé·ã«ãªãã
-v : utf-8 ã®æåå¹
ã§é·ããè¨ç®ãã(åè§ã¯1ãå
¨è§ã¯2)ã(visual-width)
-C 0 : ä¸è¨ã®å¦çã§0ãä¸ããåã®æ°ãæ°ããã(columns count)
-C 0b : ä¸è¨ã®å¦çã§0ãä¸ããåã®æåã®ä½ç½®ãä¸ãããç¡ããã°0ã
-C 0e : ä¸è¨ã®å¦çã§0ãä¸ããåã®æå¾ã®ä½ç½®ãä¸ãããç¡ããã°0ã
-C 0be : ä¸è¨ã®å¦çã§0ãä¸ããåã®æåã¨æå¾ã®ä½ç½®ãä¸ãããç¡ããã°0ã
-C -0 : ä¸è¨ã®å¦çã§0ãä¸ããªãåã®æ°ãæ°ããã-0ã§ãªãã¦0-ã®2æåãå¯ã
-C -0b : ä¸è¨ã®å¦çã§0ãä¸ããªãåã®æåã®ä½ç½®ãä¸ãããç¡ããã°0ã
-C -0e : ä¸è¨ã®å¦çã§0ãä¸ããªãåã®æå¾ã®ä½ç½®ãä¸ãããç¡ããã°0ã
-C -0be : ä¸è¨ã®å¦çã§0ãä¸ããªãåã®æåã¨æå¾ã®ä½ç½®ãä¸ãããç¡ããã°0ã
-C 1 : åã®æ°ãæ°ããã(1ã®é¨åã¯å®éã«ã¯0ã¾ãã¯-0ã§ç¡ããã°ä½ã§ãè¯ã)
-c : ãã㯠-C 1 ã¨åã(åã®æ°ãæ°ãã)ã
-= : 1è¡ç®ã(ãããã¨è¦ãªãã¦)ãã®ã¾ã¾åºåããã
( run in 0.496 second using v1.01-cache-2.11-cpan-5511b514fd6 )