File: sort.1

package info (click to toggle)
manpages-ja 0.5.0.0.20120606-1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 25,964 kB
  • sloc: perl: 161; makefile: 116
file content (448 lines) | stat: -rw-r--r-- 17,458 bytes parent folder | download | duplicates (6)
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
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
.\" You may copy, distribute and modify under the terms of the LDP General
.\" Public License as specified in the LICENSE file that comes with the
.\" gnumaniak distribution
.\"
.\" The author kindly requests that no comments regarding the "better"
.\" suitability or up-to-date notices of any info documentation alternative
.\" is added without contacting him first.
.\"
.\" (C) 2002 Ragnar Hojland Espinosa <ragnar@ragnar-hojland.com>
.\"
.\"	GNU sort man page
.\"	man pages are NOT obsolete!
.\"	<ragnar@ragnar-hojland.com>
.\"
.\" Japanese Version Copyright (c) 2000 NAKANO Takeo all rights reserved.
.\" Translated Sun 12 Mar 2000 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
.\" Updated Fri 4 Apr 2003 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
.\"
.\"WORD:	collate sequence	照合順序
.\"WORD:	significant digits	有効桁数
.\"
.TH SORT 1 "7 October 2002" "GNU textutils 2.1"
.SH 名前
sort \- テキストファイルをソートする
.SH 書式
.B sort
.RB [ \-cm ]
.RB [ \-bdfginruzM ]
.RB [ "\+\fIPOS1\fR[\fB\-\fIPOS2" ]
.RB [ "\-o \fIOUTFILE" ]
.RB [ "\-t \fISEPARATOR" ]
.RB [ "\-k \fIPOS1\fR[\fB,\fIPOS2" ]
.RB [ "\-K \fIPOS1\fR[\fB,\fIPOS2" ]
.RB [ "\-S \fISIZE\fR" ]
.RB [ "\-T \fITEMPDIR" ]
.RB [ \-\-reverse ]
.RI [ FILE... ]

.BR sort " [" \-\-help "] [" \-\-version ]
.SH 説明
.B sort
は与えられた各
.I FILE
をソート・マージ・比較する。結果は結合されて標準出力に書き出される。
.I FILE
が一つも与えられないと標準入力から読み込む。また
.I FILE
.RB ` \- '
だった場合には、そのファイルには標準入力が用いられる。

GNU
.B sort
は (他の GNU ユーティリティと同じく)
入力ファイルの行の長さや、行あたりのバイト数に制限はない。
また入力ファイルの最後が改行でなければ、
.B sort
は黙って改行を一つ追加する。

エラーが起こると、
.B sort
はステータス 2 で終了する。
      
環境変数
.B TMPDIR
が設定されていると、
.B sort
は一時ファイルの置き場所として、デフォルトの /tmp の代わりにそのディレ
クトリを用いる。オプション
.BI \-T " TEMPDIR"
でも一時ファイルを置くディレクトリを指定できる。
オプションは環境変数より優先される。

.BR \-k " や " +
オプションでのソートフィールドの場所指定は、
.IB F . C
という形式で行う。ここで \fIF\fP は用いるフィールドの番号で、
\fIC\fP は先頭の文字の番号を、そのフィールドの先頭 (\fB+\fIPOS\fR の場合)
あるいは直前のフィールドの末尾 (\fB\-\fIPOS\fR の場合) から数えた数字である。
\fB.\fIC\fR が省略された場合は、フィールドの先頭文字になる。
.B \-b
オプションが指定されると、フィールド指定の \fB.\fIC\fR の部分は、
そのフィールドの空白でない最初の文字 (\fB+\fIPOS\fR の場合)
あるいは直前のフィールドの末尾以降の空白でない最初の文字
(\fB\-\fIPOS\fR の場合) から数えられる。

ソートキーのオプションには、
出力順序オプション (output ordering option) を含めることもでき、
その場合はグローバルな順序オプションはそのフィールドには用いられない。
.B \-b
オプションはフィールド指定の \fB+\fIPOS\fR と \fB\-\fIPOS\fR の
どちらか片方にも、あるいは両方にも、独立に効力を及ぼすことができる。
.B \-b
がグローバルなオプションから継承されたものである場合は、
両方に影響する。キーは複数のフィールドにまたがってもかまわない。

.SH オプション
.SS 動作モード
.B sort
のデフォルトの動作はソート動作である。
これは以下のオプションによって変更できる。
.TP
.B \-c
与えられたファイルがすでにソートされているかどうかをチェックする。
ソートされていないものがあった場合は、
エラーメッセージを表示してステータス 1 で終了する。
それ以外の場合は正常終了する。
.TP
.B \-m
与えられたファイル群をまとめてソートしてマージする。
入力ファイルは事前にそれぞれソートされていなければならない。
マージ動作ではなく、ソート動作を複数ファイルにまとめて行うこともできる。
マージ動作が提供されているのは、
(これでよい場合は) こちらの方が高速だからである。
.PP
行のペアは以下のように比較される。
キーフィールドが指定されている場合は、
.B sort
は順序オプションによって
コマンドラインから指定された順に、
それぞれの行からの各フィールドを比較する。
比較動作は違いを発見するか全てのフィールドを尽くすまで継続される。

グローバルオプションの `\fB\-bdfinrM\fR' のいずれかが指定されており、
キーフィールドが一つも指定されていない場合は、
.B sort
は行全体をグローバルオプションに従って比較する。

最後に、全てのキーが等しい (あるいは順序オプションが
まったく指定されなかった) 場合には、
.B sort
は最終手段として、行を \fBLC_COLLATE\fR ではなくマシンの
照合順序にしたがって 1 バイトずつ比較する。
この最終手段の比較は
.B \-r
オプションに従う。
.B \-s
オプション (stable オプション) は、この最終手段比較を無効にし、
全てのフィールドの比較結果が同じだった行の順序を、入力の順序のままにする。
フィールドやグローバルオプションがまったく指定されなかった場合は、
.B \-s
オプションは無視される。
.SS 出力順序オプション
以下のオプションは、
.B sort
が行を出力する順序に影響する。これらはグローバルにも、
あるいは特定のキーフィールドの一部としても指定できる。
キーフィールドが指定されなければ、
グローバルオプションで行全体が比較される。
キーフィールド指定がされた場合、
順序オプションが特に指定されなかったフィールドには、
グローバルオプションが継承される。
.TP
.B \-b
各行の比較の際に、行頭の空白を無視する。
.TP
.B \-d
「電話帳」順でソートする。
アルファベット、数字、空白以外のキャラクタをすべて無視してソートする。
.TP
.B \-f
ソートの際に、小文字を対応する大文字と同じに扱う。
例えば `b' は `B' と同じとみなされる。
.TP
.B \-g
.BR strtod (3)
を用いて数値に変換した後、その数値順にソートする。
これを用いると、浮動小数点の理工学的な記法 (`1.0e-34' や `10e100' など)
を扱うことができる。このオプションは、他に手段がない場合に限って用いること。
これは
.B \-n
よりずっと遅いし、有効桁数が多すぎると、
丸めたかたちで比較されてしまう。
さらに、倍精度浮動小数点の範囲で扱えない数値は
0 であるかのように処理される。
またオーバーフロー・アンダーフロー・変換エラーは報告されない。
.TP
.B \-i
印字可能でない文字を無視する。
.\" [旧訳] ASCII コードの範囲である 040 以上 0176 以下 (8 進数)
.\" に含まれない文字を無視する。
.TP
.B \-n
数値順に評価する。行先頭の文字列
(空白が前置されていても良い) を数値文字列として比較する。
数値文字列は、先頭の \- 符号 (なくても良い)、 0 桁以上の数字、
そして小数点と 0 桁以上の数字 (なくても良い) からなる。
.sp
.B sort
は浮動小数点表記文字列を、あまり普通でない方法で比較する。
まず各文字を C の \fBdouble\fR 方に変換してからそれらの値を比較するのではなく、
2つの文字の基数点 (radix point) を揃えて、1 文字づつ比較するのである。
この方法の利点は速度である。実際この方法は、
2つのそれぞれの文字列を double に変換してから比較するよりずっと速い
(あるいは integer 変換に比べてすらずっと速い)。
また精度の問題も生じない。多くのシステムでは、
文字列を double に変換してから比較する方法では、
精度は 16 桁に制限されてしまう。
  
先頭の `+' や指数表記は認識できない。
このような文字列を数値的に比較するには
.B \-g
を用いること。
.TP
.B \-r, \-\-reverse
比較の結果を逆順にする。より大きなキー値を持つ行が、
より早く現われるようになる。
.TP
.B \-M
行頭の空白文字をすべて無視して最初に現われた 3 文字を、
月の名称の省略形とみなして `JAN' < `FEB' < ... < `DEC' の順でソートする。
小文字は大文字と同じに扱われる。
月の名称にない文字列は、より低位であるとみなされる。
.SS その他のオプション
.TP
.B +\fIPOS1\fR[\fB-\fIPOS2\fR]
ソートフィールド指定の obosolete な古い形式。行の
.IR POS1 " から " POS2
の直前までのフィールドを指定する。
\fIPOS2\fR は\fB含まない\fR。
\fIPOS2\fR が省略されたら行末まで。
フィールドと文字位置はそれぞれ 0 から数えはじめる。
.TP
.B \-k \fIPOS1\fR[\fB,\fIPOS2\fR]
.B \-K \fIPOS1\fR[\fB,\fIPOS2\fR]
ソートフィールド指定の POSIX 形式。今後はこちらが推奨される。行の
.IR POS1 " から " POS2
までのフィールドを指定する。
\fIPOS2\fR を\fB含む\fP。
\fIPOS2\fR が省略されたら行末まで。
フィールドと文字位置はそれぞれ 0 から数えはじめる。
.TP
.B \-o \fIOUTFILE
出力先を標準出力から
.I OUTFILE
に変更する。
.I OUTFILE
が入力ファイルのどれかひとつだった場合、
.B sort
はその入力ファイルを一時ファイルにコピーしてから、ソートと
.I OUTFILE
への出力を行う。
.TP
.B \-t \fISEPARATOR
各行からソートキーを検索する際、文字
.I SEPARATOR
をフィールドのセパレーターにする。
デフォルトでは、
フィールドは空白以外の文字と空白文字の間の空文字列
(empty string) によって分離される。
例えば入力行として ` foo bar' が与えられた場合、
.B sort
はこの行をフィールド ` foo' と ` bar' に分離する。
フィールドセパレーターは、
その前後のフィールドには含まれないものとされる。
.TP
.B \-u
デフォルトの動作と
.I \-m
オプションの動作では、等しいとされた行のうちの最初のものだけを表示する。
.I \-c
オプションの動作では、
連続した行で等しいものがないかどうかをチェックする。
.TP
.B \-z
入力における行の末尾が、<LF> (ラインフィード) ではなく
<NUL> (ゼロバイト文字) で終了するとみなす。
このオプションは `perl \-0' や `find \-print0'
や `xargs \-0' などと組み合わせて使うと便利で、
これらは任意のパス名を扱う際に信頼性を上げる効果を持つ
(ラインフィード文字が含まれるパス名も正しく扱える)。
.TP
.B -S \fISIZE\fB
\fISIZE\fB KB のバッファを使う。
単位指定文字 (後述) を用いれば、単位を変更できる。
.TP
.B \-T \fITEMPDIR
.I TEMPDIR
を一時ファイルを置くディレクトリにする。
このオプションは環境変数
.B TMPDIR
より優先される。\fB\-T\fR オプションが複数回指定されると、
それぞれのディレクトリが用いられ、
巨大なソートやマージの際には性能が上がるかもしれない。
.TP
.B \-\-help
標準出力に使用方法のメッセージを出力して正常終了する。
.TP
.B \-\-version
標準出力にバージョン情報を出力して正常終了する。
.SH 例
\fB\(bu\fR 数値的に降順 (逆順) にソートする。
.sp
.RS
.nf
sort \-nr
.fi
.RE	     
.sp
\fB\(bu\fR アルファベット順にソートし、第 1・第 2 フィールドは無視する。
キーに開始フィールドとなる 3 だけを指定すれば、各行末までが比較される。
.\"nakano: 意訳すぎ?
.sp
.RS
.nf
sort \-k3
.fi
.RE
.sp
\fB\(bu\fR 第 2 フィールドで数値的にソートし、
同じになったものを第 5 フィールドの第 3〜第 4 文字で更にソートする。
フィールドの区切りとして `:' を用いる。
.sp
.RS
.nf
sort \-t : -k 2,2n \-k 5.3,5.4
.fi
.RE
.sp
`\-k 2,2' の代わりに `\-k 2' と指定すると、
.B sort
は第 2 フィールドから行末までの全ての文字を、
プライマリな「数値」キーとして扱ってしまう。
通常の用途では、1 つ以上のフィールドにまたがったキーを
数値的に扱うと、望む結果は得られないだろう。

`n' の指定が最初のキーの末尾で行われている点にも注意してほしい。
これは `\-k 2n,2' や `\-k 2n,2n' としても効果は同じである。
`b' 以外の全てのオプション指定は、開始フィールドに置いても
キー指定全体の末尾に置いても、指定全体に効果を及ぼす。

\fB\(bu\fR パスワードファイルを第 5 フィールドでソートし、
先頭の空白文字は無視する。第 5 フィールドが同じ値を持つ行は、
第 3 フィールドのユーザー ID で数値的にソートする。
.sp
.RS
.nf
sort \-t : \-k 5b,5 \-k 3,3n /etc/passwd
.fi
.RE
.sp
数値比較オプション \fB\-n\fR はグローバルに用いても結果は同じ。
.sp
.RS
.nf
sort \-t : \-n \-k 5b,5 \-k 3,3 /etc/passwd
.fi
.RE
.sp
\fB\(bu\fR 英大文字小文字の違いを無視してソートされた tags ファイルを生成する。
.sp
.RS
.nf
find src \-type f \-print0 | sort \-t / \-z \-f |
xargs \-0 etags \-\-append
.fi
.RE
.sp
この `\-print0', `\-z', `\-0' は、改行 (line feed) 文字を含む
パス名がソート操作によって壊れないようにするためのものである。

\fB\(bu\fR 最後の例。フィールドの先頭・末尾の空白群を無視するには、
第 1 キーの末尾フィールド指定もして、 `b' オプションを使えばよい。
.sp
.RS
.nf
sort \-t : \-n \-k 5b,5b \-k 3,3 /etc/passwd
.fi
.RE
.sp
あるいはグローバルな指定を \fB\-n\fR の代わりに \fB\-b\fR
にして、第 2 キーのオプションに `n' を追加するかたちでもよい。
.sp
.RS
.nf
sort \-t : -b \-k 5,5 \-k 3,3n /etc/passwd
.fi
.RE
.SH 乗数
数値の後には、倍数を指定するサイズ指定文字と、
通常のバイトを意味する \fBB\fR または
10 進の「商業用」バイトを意味する \fBD\fR を
続けて置くことができる。
たとえば `1KB' は `1024' と等しく、`1KD' は `1000' と等しい。
この例外は \fBb\fR (512 バイト)、\fBc\fR (1 バイト)、
\fBw\fR (使うべきでない - System V では 2 を意味し、
4.2BSD では 4 を意味する) の 3 つで、
これらの後に \fBB\fR や \fBD\fR をおくことはできない。

.TP
.B k
キロ: 通常バイト指定なら 2^10 = 1024、10 進バイト指定なら 10^3 = 1000
.TP
.B M
メガ: 2^20 = 1,048,576 または 10^6 = 1,000,000
.TP
.B G
ギガ: 2^30 = 1,073,741,824 または 10^9 = 1,000,000,000
.TP
.B T
テラ: 2^40 = 1,099,511,627,776 または 10^12 = 1,000,000,000,000
.TP
.B P
ペタ: 2^50 = 1,125,899,906,842,624 
または 10^15 = 1,000,000,000,000,000
.TP
.B E
エクサ: 2^60 = 1,152,921,504,606,846,976 
または 10^18 = 1,000,000,000,000,000,000
.TP
.B Z
ゼタ: 2^70 = 1,180,591,620,717,411,303,424
または 10^21 = 1,000,000,000,000,000,000,000
.TP
.B Y
ヨタ: 2^80 = 1,208,925,819,614,629,174,706,176 
または 10^24 = 1,000,000,000,000,000,000,000,000
.SH 移植性
.B sort
の歴史的な (BSD と System V の) 実装では、
いくつかのオプション (特に
.BR \-b ", " \-f ", " \-n )
の解釈が異なる。 POSIX に従えば、\fB\-n\fR はもはや
\fB-b\fR を暗黙のうちに指定することはない。
このあたりを首尾一貫させるため、 \fB\-M\fR も同様に変更されている。
これによって、曖昧な指定では
フィールド内の文字位置の指定の意味が変わってしまうかもしれない。
唯一の解決法は、 \fB\-b\fR を明示的に指定することである。
.SH ロケール
.TP
.B LC_COLLATE
(特に他の指定がない限り) 全ての比較で用いられる
文字の照合順序を指定する。
.TP
.B LC_CTYPE
.BR \-b ", " \-d ", " \-f ", "\-i
といった出力順序オプションの動作に影響する。
.TP
.B LC_NUMERIC
基数文字と桁区切り文字 (, など) を指定する。
.TP
.B LC_TIME
月名のスペルを決める。 \fB\-M\fR に影響する。
.SH 注意
プログラムのバグについては bug-textutils@gnu.org に報告してください。
.br
man ページは Ragnar Hojland Espinosa <ragnar@ragnar-hojland.net>
が作成しました。