This module provides a UNIX-like command `collen'. Copyright (c) 2020-2023 Toshiyuki SHIMONO. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. ■■ 概要 ■■ このモジュールをインストールすると、コマンド collen が使えるようになる。 ■■ 目的 ■■ 入力の列について、いろいろな数を調べる。 入力データを各行を区切り文字ごとに区切って、文字の長さに変換して出力する。 行末の改行文字は特にオプションで指示のない限り、長さ計算の対象ではない。 オプション : -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行目を(ヘッダと見なして)そのまま出力する。 -1 : 各行について、元の文字列を右側に付加する。 -@ : ファイル名を行末に出力。(output filename) -^ : ファイルを読み終わった後に、ファイル名を出力する。"^(タブ文字)ファイル名" が出力される。 -! : フラッシュする。バッファに貯めない。 -f 'Ns' : Nは数字でsは文字列。Nで固定長で数を表示し、区切り文字がsとなる。溢れた場合は*を表示 --help : この $0 のヘルプメッセージを出す。 perldoc -t $0 | cat でもほぼ同じ。 --help opt : オプションのみのヘルプを出す。opt以外でも options と先頭が1文字以上一致すれば良い。 ■■ コマンドの例 ■■ collen -= some.tsv | colsummary -= とすると、長さの分布が得られる。 ■■ 利用シーンの例 ■■ collen -c FILE.tsv により、ファイルの各行の列数を知ることが出来る。 (awk -F'\t' '{print NF}' でも可能であるが、動作が本当に意図通りであるか 不安になるかも知れない。awkとgawkとnawkの別があるし、awkの世代で動作が 異なる場合もあるため。) collen -c FILE.tsv | freq -f で、列数の頻度表が出力される。(全ての列が揃っているか点検が可能。) ■■ 補足 ■■ コマンド自体は開発歴は長いが、このコマンド単体のパッケージ化は、この文章を 書いた時点(2023-08-12, Version 0.250)で、1時間も経ってないので、この解説文 する余地は多いであろう(今まで必ず2〜3日別の日に何度も点検しないと満足なパッケージには ならない)。