aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man1/rs.1
blob: 9ba50ff49301c1a3b717d05e5ea541d91779410e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
.\" Copyright (c) 1993
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"	@(#)rs.1	8.2 (Berkeley) 12/30/93
.\" %FreeBSD: src/usr.bin/rs/rs.1,v 1.4.2.5 2002/06/21 15:28:55 charnier Exp %
.\" $FreeBSD$
.\"
.Dd December 30, 1993
.Dt RS 1
.Os
.Sh 名称
.Nm rs
.Nd データ配列の整形
.Sh 書式
.Nm
.Oo
.Fl Oo Cm csCS Oc Ns Op Ar x
.Oo Cm kKgGw Oc Ns Op Ar N
.Cm tTeEnyjhHmz
.Oc
.Op Ar rows Op Ar cols
.Sh 解説
.Nm
ユーティリティは標準入力を読み込み、
その各行が、配列を空白で区切った行ベクトルであるとして解釈し、
その配列をオプションに従って変換し、
結果を標準出力に書き出します。
引数を指定しない場合、
.Nm
は、端末で見やすいように、入力をカラム形式 (columnar format) に変換します。
.Pp
入力配列の形状は、その行数と第 1 行目のカラム数から推測します。
それが不都合なら、
.Fl k
オプションによって最初の数行を読み飛ばし、
より好都合な行を用いることもできます。
この他のオプションは、入力カラムの解釈を変更するものです。
.Pp
出力配列の形状は引数
.Ar rows
および
.Ar cols
の指定により変化します。これらの引数は正の整数です。
それらの一方だけが正の整数である場合、
.Nm
はデータ全体と整合するもう一方の値を計算します。
必要なら、オプションの説明に述べる方法で不足したデータが追加され、
余剰データが削除されます。
行と列の転置など、出力カラム形式を変更するオプションもあります。
.Pp
オプションを以下に示します。
.Bl -tag -width indent
.It Fl c Ns Ar x
入力カラムの区切りを単一文字
.Ar x
とします。
.Ar x
を省略すると `^I' であると見なされます。
.It Fl s Ns Ar x
.Fl c
と似ていますが、
.Ar x
中の最長文字列が区切りとされます。
.It Fl C Ns Ar x
出力カラムの区切りを単一文字
.Ar x
とします。
.Ar x
を省略すると `^I' であると見なされます。
.It Fl S Ns Ar x
.Fl C
と似ていますが、文字列
.Ar x
が区切り文字となります。
.It Fl t
入力配列の列データを用いて出力配列の行を埋めます。
つまり、
.Ar rows
および
.Ar cols
指定を優先しつつ、入力を転置します。
.It Fl T
.Ar rows
および
.Ar cols
指定を無視し、入力の純粋な転置結果を出力します。
.It Fl k Ns Ar N
入力の最初の
.Ar N
行を無視します。
.It Fl K Ns Ar N
.Fl k
と似ていますが、無視した各行を表示します。
.It Fl g Ns Ar N
溝 (gutter) の幅 (カラム間のスペース) を
.Ar N
とします。
通常は 2 です。
.It Fl G Ns Ar N
溝 (gutter) の幅 (カラム間のスペース) として、
最大カラム幅の
.Ar N
パーセント増しの値を用います。
.It Fl e
入力の各行を単一の配列エントリとみなします。
.It Fl n
第 1 行目より少ないエントリしかない行があれば、
その行にヌルエントリを追加して埋め合わせます。
通常は、エントリの不足分は入力の次の行からエントリをとって埋め合わせます。
.It Fl y
出力の寸法を充たすだけのエントリがない場合、
入力を最初から繰り返し用いて出力を埋め合わせます。
通常は、出力は空白で埋め合わされます。
.It Fl h
入力配列の形状を表示するだけで、処理は何も行ないません。
形状とは単に、行数と、第 1 行目のエントリ数のことです。
.It Fl H
.Fl h
と似ていますが、各行の長さも表示します。
.It Fl j
カラム内でエントリを右揃えにします。
.It Fl w Ns Ar N
画面表示幅を正整数
.Ar N
の値に設定します。
通常は 80 です。
.It Fl m
出力配列の末尾から余分な区切り文字を削除しません。
.It Fl z
カラム幅を最も大きなエントリにあわせます。
.El
.Pp
引数がない場合、
.Nm
は入力を転置し、
無視しない最初の行が画面表示幅を越えていなければ、
入力の各行毎に 1 つの配列エントリがあると仮定します。
数値引数をとるオプションで数値指定が省略されていると、
別途指示がない限り数値は 0 とみなされます。
.Sh 使用例
.Nm
ユーティリティはいくつかのプログラム (例えば、
.Xr spell ,
.Xr du ,
.Xr file ,
.Xr look ,
.Xr nm ,
.Xr who ,
.Xr wc 1 )
のストリーム出力を、好都合な「ウィンドウ」形式に変換する
フィルタとして利用できます。例えば
.Bd -literal -offset indent
who | rs
.Ed
.Pp
これと同様な出力を行なうほとんどのプログラムに対して
.Nm
は十分な機能を提供しますが、
.Xr ls 1
には既にこの機能が組み込まれています。
.Pp
ストリーム入力をベクトルに変換して出力し、それをまた元に戻すには、
次のようにします。
.Bd -literal -offset indent
rs 1 0 | rs 0 1
.Ed
.Pp
各要素が 1 から 100 までの乱数から成る 10×10 行列とその転置行列を
生成するには、以下のようにします。
.Bd -literal -offset indent
jot \-r 100 | rs 10 10 | tee array | rs \-T > tarray
.Ed
.Pp
.Xr vi 1
エディタにおいて、行あたり 9 要素の複数行ベクトルからなるファイルに対して
挿入や削除を行ない、
その後 9 カラム形式に整形するには、次のようにします。
.Bd -literal -offset indent
:1,$!rs 0 9
.Ed
.Pp
最後に、
あるデータベースを 4 行ずつのフィールドの最初の行でソートしたいなら、
以下のようにしてみるとよいでしょう。
.Bd -literal -offset indent
rs \-eC 0 4 | sort | rs \-c 0 1
.Ed
.Sh 関連項目
.Xr jot 1 ,
.Xr pr 1 ,
.Xr sort 1 ,
.Xr vi 1
.Sh バグ
.Bl -item
.It
2 次元配列しか扱えません。
.It
現在のアルゴリズムはファイル全体をメモリに読み込むため、
メモリに入りきらないファイルは整形できません。
.It
文字位置によってフィールドを定義することは、まだできません。
.It
カラムを並べ換えることも、まだ不可能です。
.It
オプションが多すぎます。
.El