rs(1) FreeBSD 一般コマンドマニュアル

rs

前のページ 上に戻る 次のページ

rs




解説

     rs は標準入力を読み込み、その各行が、配列を空白で区切った行ベクトルである
     として解釈し、その配列をオプションに従って変換し、結果を標準出力に書き出
     します。引数を指定しない場合、 rs は、端末で見やすいように、入力をカラム
     形式 (columnar format) に変換します。

     入力配列の形状は、その行数と第 1 行目のカラム数から推測します。それが不都
     合なら、 -k オプションによって最初の数行を読み飛ばし、より好都合な行を用
     いることもできます。この他のオプションは、入力カラムの解釈を変更するもの
     です。

     出力配列の形状は引数 rows および cols の指定により変化します。これらの引
     数は正の整数です。それらの一方だけが正の整数である場合、 rs はデータ全体
     と整合するもう一方の値を計算します。必要なら、オプションの説明に述べる方
     法で不足したデータが追加され、余剰データが削除されます。行と列の転置な
     ど、出力カラム形式を変更するオプションもあります。

     オプションを以下に示します。

     -cx     入力カラムの区切りを単一文字 x とします。 x を省略すると `^I' で
             あると見なされます。

     -sx     -c と似ていますが、 x 中の最長文字列が区切りとされます。

     -Cx     出力カラムの区切りを単一文字 x とします。 x を省略すると `^I' で
             あると見なされます。

     -Sx     -C と似ていますが、文字列 x が区切り文字となります。

     -t      入力配列の列データを用いて出力配列の行を埋めます。つまり、 rows
             および cols 指定を優先しつつ、入力を転置します。

     -T      rows および cols 指定を無視し、入力の純粋な転置結果を出力します。

     -kN     入力の最初の N 行を無視します。

     -KN     -k と似ていますが、無視した各行を表示します。

     -gN     溝 (gutter) の幅 (カラム間のスペース) を N とします。通常は 2 で
             す。

     -GN     溝 (gutter) の幅 (カラム間のスペース) として、最大カラム幅の N パ
             ーセント増しの値を用います。

     -e      入力の各行を単一の配列エントリとみなします。

     -n      第 1 行目より少ないエントリしかない行があれば、その行にヌルエント
             リを追加して埋め合わせます。通常は、エントリの不足分は入力の次の
             行からエントリをとって埋め合わせます。

     -y      出力の寸法を充たすだけのエントリがない場合、入力を最初から繰り返
     -z      カラム幅を最も大きなエントリにあわせます。

     引数がない場合、 rs は入力を転置し、無視しない最初の行が画面表示幅を越え
     ていなければ、入力の各行毎に 1 つの配列エントリがあると仮定します。数値引
     数をとるオプションで数値指定が省略されていると、別途指示がない限り数値は
     0 とみなされます。


使用例

     rs はいくつかのプログラム (例えば、 spell, du, file, look, nm, who,
     wc(1)) のストリーム出力を、好都合な「ウィンドウ」形式に変換するフィルタと
     して利用できます。例えば

           who | rs

     これと同様な出力を行なうほとんどのプログラムに対して rs は十分な機能を提
     供しますが、 ls(1) には既にこの機能が組み込まれています。

     ストリーム入力をベクトルに変換して出力し、それをまた元に戻すには、次のよ
     うにします。

           rs 1 0 | rs 0 1

     各要素が 1 から 100 までの乱数から成る 10×10 行列とその転置行列を生成す
     るには、以下のようにします。

           jot -r 100 | rs 10 10 | tee array | rs -T > tarray

     vi(1) エディタにおいて、行あたり 9 要素の複数行ベクトルからなるファイルに
     対して挿入や削除を行ない、その後 9 カラム形式に整形するには、次のようにし
     ます。

           :1,$!rs 0 9

     最後に、あるデータベースを 4 行ずつのフィールドの最初の行でソートしたいな
     ら、以下のようにしてみるとよいでしょう。

           rs -eC 0 4 | sort | rs -c 0 1


関連項目

     jot(1), pr(1), sort(1), vi(1)


バグ

     2 次元配列しか扱えません。

     現在のアルゴリズムはファイル全体をメモリに読み込むため、メモリに入りきら
     ないファイルは整形できません。

     文字位置によってフィールドを定義することは、まだできません。

     カラムを並べ換えることも、まだ不可能です。

     オプションが多すぎます。

ABELNET VPSサービス