App-Bin4TSV

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

This module "App::Bin4TSV" provides many useful Unix-like commands to handle
text data file mainly for tabular shape, especially for TSV format files. 
The included commands are as follows. 

...
...
...


 Copyright (c) 2021 Toshiyuki SHIMONO. All rights reserved.
 This program is free software; you can redistribute it and/or

lib/App/Bin4TSV.pm  view on Meta::CPAN

our $DATE = '2021-05-28T02:55+09:00' ; 

=encoding utf8

=head1 NAME

App::Bin4TSV

=head1 SYNOPSIS

This module provides dozens of useful Unix-like commands to handle tabular text files especially TSV files.

=head1 DESCRIPTION

The included commands are as follows. 

B<alluniq>

B<backcolor>

B<boxmuller>

scripts/cat-n  view on Meta::CPAN

    }
    close $FH ;
    exit 0 ;
}
=encoding utf8

=head1

   $0 

  Unixのコマンドを使った cat -n と同じように、各行の先頭に行番号を付加する。
  ただし、余計な空白文字などは入らない。行番号と元の入力文字列の間には
  タブ文字のみが入る。
  
  なお、Ctrl-C を押下されたときに、何行目を処理しているかを標準エラー出力に出す。

オプション: 
   
  -= ; 先頭行の行番号を = 、2行目から行番号を1から始める。
  -: ; 行番号の直後にコロン文字(:) を付加する。
  -, str ; 行番号との間の区切り文字の指定。未指定ならば、タブ文字。

scripts/colchop  view on Meta::CPAN


=encoding utf8 

=head1

 $0 -bg (バイト数)(,折り返しの最大値)
 $0 -ug (UTF-8の文字数)(,折り返しの最大値)
 $0 -vg (半角文字幅)(,折り返しの最大値) 

  タブ文字などで区切られた各フィールドを、指定された幅のみ表示する。
   Unix/Linux の tabs コマンドで表示設定を変えながら見るのも良い。
   ビューアless を起動中に -x N(数) と入力してEnter するもの良い。

オプション :

  -b : バイト数で計算する。
  -u :  utf-8 とみなして、長さを計算する。そうでなければ、単純なバイト長になる。
  -v :  utf-8 の文字幅で長さを計算する(半角は1、全角は2)。(visual-width)

  -g N1,N2  : N1は何文字ずつ取り出すか。未指定なら 6。N2は最大何回取り出すか。0なら無制限。未指定なら2。
  -h N ; 左からN列のセルは、折り返す処理をしない。<-- 

scripts/csel  view on Meta::CPAN

   - 範囲を指定することもできる。たとえば、-p 2..5 とすると2列目から5列目のみ表示する。 5..2 とすると、逆順になる。 ".." means range.
   
 開発上のメモ : 
    * -i の指定は正規表現と見なされるが、入力のsplitにも出力のjoin にも用いるので、注意が必要。
    * 引数で指定できる列に関して、範囲演算 .. に加えて  / で一定長の飛び飛びも定義できるようにしたい。
    * AWKのコマンドを生成するようにせよ。

このプログラムに求められる要件 (テストにも含めたい) :

    * 十分高速に動作すること。gawk と同じ程度が目標だった。cut よりは高速にしたかった。。
    * cutより早くするのが厳しければ、 同じファイルを Unix コマンドsort の半分程度であること。
    * $0 -p -1 できちんと最後の列を表示すること。
    * 列数が行毎に異なる入力データでも、きちんと動作すること。

# このブログラムは 2016年2月9日(火)から表形式データに対する道具作りの一環として、下野寿之が作成したものである。    
=cut

scripts/dirhier  view on Meta::CPAN


=encoding utf8

=head1

   $0 directory [directory]..

     引数で指定されたディレクトリごとに、すぐ直下のファイルの数、
    2段階下のファイルの数、3段階の下のファイルの数、..、指定された任意の数下った段階の
    ディレクトリにあるファイルの数を分かり安く表示する。
     (多数のデータファイルがあり、Unix/Linuxの ls コマンドでもファイル一覧の取得に
     時間がかかる状況、もしくは、tree コマンドよりも簡潔な情報が欲しい時に役に立つ。)

 オプション : 
   -b : 各深さのファイルのバイトサイズの合計を与える。(Byte sum)
   -d : ディレクトリの個数のみ数える。(Directory number is counted.)
   -l : シンボリックリンクをたどる。(無限参照を引き起こし得るので、要注意。) (symblic Links are traced.)
   -m num : 最も潜る深さを指定する。未指定なら、6。 (the Maximum depth)
   -n : 深さを コロン:の前に表示する。(explicitly shows the depth Number with :)
   -q : 着色をしない。 (no coloring. visually Quiet.)

scripts/gzpaste  view on Meta::CPAN

    close $FH ;
    exit 0 ;
}

=encoding utf8

=head1

 $0  some1.gz  some2.gz ... 

  Unixの paste のように、複数のファイルの各行を横に並べる。

 オプション: 
   -d str : 出力の区切り文字
   -g ; gzcat コマンドを使ってファイルを読み取るようにする。PerlIO::gzip を読取りに使わない。

   -r : 入力の改行が "\r\n" を仮定する。(出力は "\n" のまま。)
   -t num : gzファイルが読み取れない場合に何回繰り返して読み取るか。(tolerance)
   -3 : 秒数の表示を小数点以下3桁にする。
   -! ; 出力をバッファに貯めない。

scripts/uniq-c  view on Meta::CPAN

    close $FH ;
    exit 0 ;
}


=encoding utf8

=head1
 $0

  Unixコマンドの  uniq を使った uniq -c の代替。
  同じ入力が連続して何個続いた火を出力する。
  実行中に Ctrl+Cキーを押したら途中までの結果を表示する。
  (文字コードの問題で uniq がうまく機能しない場合も使える。)

オプション :

 [入力上のオプション]
  -, str : 個数とそれに対応する文字列の区切りを str に変更。未指定ならタブ文字。
  -. num  : 同じ行がnum行に達するごとに表示をして、カウントを連続個数にリセット。

scripts/updir  view on Meta::CPAN

	my $fn = scalar @files ; 
	#grep $_ = decode_utf8 quotemeta encode_utf8 $_ , @files if $o{q}  ; # -q 
	my @files1 = splice @files , 0 , $o{g} ; 
	my @files2 = splice @files , - min ( $o{g}, scalar @files ) , $o{g} ; 
	#print "$dir\t$f1\t$f2\n" ;
	return [ $dir , $fn , ! @files2 ? "@files1" : ! @files ? "@files1 @files2" : "@files1 .. @files2" ] ; 
}

sub moveUp ( ) { 
	my $dir0 = getcwd ;
	my $status = chdir '..' ;  # <-- -  シンボリックリンクからは始めると、Unixのcd .. と異なり、絶対パスを上がってしまう。
	my $dir1 = getcwd ; 
	return undef if $dir0 eq $dir1 ; 
	return $dir1 ;
}


## ヘルプの扱い
sub VERSION_MESSAGE {}
sub HELP_MESSAGE {
    use FindBin qw[ $Script ] ; 

scripts/venn  view on Meta::CPAN

       -v 0 : 出力の各行において、右側の2列に、各分類の文字列としての最小値と最大値は出力しない。
       -= : 入力の各ファイルにおいて、1行目を読み飛ばす。
       -1 : 1番目のファイルの各行を、残り(n-1)個と単にそれぞれ比較。
       #-q : 値をクオーテーションで囲む。

       -e perl_cmd_string ; 各行をchompした後の$_について、どう加工するか指定。-e 'substr $_,0,4' など。
    利用例(実験例) : 
       cat somefile | venn 
           # somefile の行数と、異なる行の値の個数が分かる。
       venn <(seq 1 3)  <(seq 3 5)  <(seq 5 18) 
           # <( .. ) はプロセス置換なので、Unix-like のシェルでないと動かない可能性はある。
       venn -v0 <(saikoro)  <(saikoro) <(saikoro)
           # saikoro はこの$0を作った著者がこの$0と共に提供される別のプログラム。

    開発メモ: 
      * 入力したファイル名を出力するようにしたい。
      * 共通して計数対象としない値を -#で指定可能としたい。
      * 文字列の min と max 以外 *も* 出力できるようにしたい。
 
=cut

scripts/wc-l  view on Meta::CPAN

    close $FH ;
    exit 0 ;
}

=encoding utf8

=head1

  $0

  Unix の  wc -l の代替。行数を出力する。

  引数などで指定されたファイルが、改行区切り文字無しで終了していた場合は-1
  を各行末に追加で出力する。ただし、空文字列で改行なしの場合は-0を出力に追加する。
  これは、分割されたファイルの合計行数を計算したい時に使える機能である。

  なお、Ctrl+C が押下された場合、途中の状態を表示して、元に戻る。
  1秒以内に再び、Ctrl+C が押下された場合のみ、プログラムは停止する。

 オプション:

scripts/wc-l  view on Meta::CPAN

 テスト:
    seq 10 | gzip -c | $0
      # -z 指定で gzip 圧縮を受け取れるか試験。
    $0  <( yes )
      #  上記のコマンドを実行する。Ctrl-Cを続けて2秒以内に押下すると、止まる。
      #  yes | $0  だと、うまくいかない。
      # Ctrl-C の受け取り方が、パイプの前のコマンドと
      # プロセス置換 <( ) とで異なるため。

  注意点: 
   * Unixコマンドは、最後に改行文字で終了しない行は数えない。
    このコマンド $0 はそのような行も数える。従って、その場合、数に違いが出るる
  開発上のメモ: 
   * 全体の合計値において、改行で終わらなかったファイルの個数と、concat した場合の差はまた別のロジックを
     要する。-1 または -0 を出力した値のそれらの合計と共に出すようにする必要がある。

=cut



( run in 3.826 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )