$0 -a NUM [FILE]
TSV形式にして、NUM列に満たない行があった場合に、余分な改行文字があったと見做して、
その改行文字を適当な文字列に置き換えて、複数の列を1行にまとめる。
さらに、NUM列を超える列があった場合は、-C 3 のような指定で、この場合は、3列に余分な列が
まとまるようにして、全行が、NUM列になるように調整する。
最後に2次情報として、標準エラー出力に、出力の何行目が変更されたかを表示する。
(入力の何行目が変更されたかについては、未実装。)
なお、空行が来た場合には、一旦それまでの出力処理を済ませて、空行を出力する。
オプション: (Nは正の整数である。REGEXは正規表現である。strは文字列である。)
-a N : 各行が最低限持つべき列数を指定する。
-c str : 余分に発生した改行文字を置換する文字列を指定する。未指定なら "#n#" となる。
-i str : 入力の列の区切り文字を指定する。未指定なら "\t" (タブ文字)となる。
-1 REGEX : 入力に1列だけの行があって、正規表現REGEXにヒットすればその行はさらに次の行に連結。そうでないなら前の行に連結。
[未実装→] -C N : もしも列の数が多すぎる場合(-aで指定した数よりも)、(1始まり)左からN行目に余分な列を吸収する[実験的]
[未実装→] -C l : もしも列の数が多すぎる場合に、その行で、どこか連結して発生するフィールド文字列が最も長くなるようにする。
[未実装→] -I str : -C の指定がある場合に、列区切り文字を 文字列 str に置換する。未指定なら "#t#" になる。
#-C N[,N].. :
--help : このヘルプを表示。
このコマンドの動作について:
1. 入力を逐次1行ずつ読む。列数が足りなかったから、足りるまで読んで連結する。
2. 丁度NUM列に達しても、その次の行が1個のみの列の場合 :
オプションの -1 REGEX (正規表現)の指定にその1個の列が一致しなければ、連結。
それ以外なら、そのNUM列に達した行を出力して、新たにその1列の行の処理に進む。
3. 以上が済んだら、入力が続く限り、1.に戻る。
ただし、オプション -Cの指定がある場合は、上記で作られた行に対して、NUM列を超える列を どこか途中で連結することで、列数を減らして、NUM列になるようにする。
The command line `perldoc App::colalign' shows the English help of `colalign' command.
利用の仕方 : 元のファイルに対して、まず、どの文字列で、余分な改行文字を置換するか決める。 そして、その文字列が 処理対象となるファイルに対して grep を試して、無いことを確かめる。
開発上のメモ:
* 10年くらい前から作ろうと思っていたが、ふと思い立って2023年8月に作成。