これらのコマンドは,ソートされたファイルで働く(あるいはそれを生成する)コ マンドです.
sort
: テキストファイルをソート
sort
は,与えられたファイル,または与えられない場合や,`-'の
fileからの全ての行を,ソート,統合,または比較します.デフォルトで,
sort
は結果を標準出力に書き出します.概要です.
sort [option]... [file]...
sort
は,処理時に3つのモードがあります.ソート(デフォルト),統合,
そしてソートされてることの調査です.以下のオプションで処理モードを変更し
ます.
行の対が,以下のように比較されます.キーフィールドが指定された場合,
sort
は,それぞれのフィールドの組を,コマンドラインで指定された順
番で,関連する順序オプションで,差が見つかるまで,またはフィールドの残り
が無くなるまで比較します.指定されない場合は,全てに比較に,
@env{LC_COLLATE}ロケールで指定された,文字の対照する順番を使用します.
大域的なオプション`Mbdfinr'が与えられて,キーフィールドが指定されて
いない場合,sort
は大域的なオプションに従い,行全体を比較します.
最終的に,全てのキーが同じとき(または,順序オプションが全く指定されてい
ない場合),最後の手段として,sort
は行全体を比較します.最後の手段
は,`-r'の大域的なオプションを尊重して比較します.`-s'
(stable)オプションは,この最後の手段では利用できず,それは,全てのフィー
ルドの比較が同じ行は,元の相対的な順序のままにするためです.フィールド,
または,大域的なオプションが指定されない場合,`-s'は効果がありませ
ん.
GNU sort
は,(全てのGNUユーティリティで指定されるように)入力行の
長さの制限や,行で許可されるバイト数の限界がありません.更に,入力ファイ
ルの最終バイトが改行でない場合,GNU sort
は,黙ってそれを供給しま
す.行の後ろの改行は,比較の目的では行の一部です.例えば,ASCIIロケー
ルでオプションを用いない場合,ASCIIの対照の順序では,タブは改行の前
にあるので,タブで始まる行は空の行の前に来ます.
あらゆるエラーで,sort
は`2'のステータスで終了します.
環境変数@env{TMPDIR}が設定されている場合,sort
は,その変数を
`/tmp'の代わりの一時ファイルのためのディレクトリとして使用します.
`-T tempdir'オプションは,順序的に環境変数に優先します.
以下のオプションは,出力行の順序に影響します.それらは,大域的,またはキー フィールドの一部として指定可能です.キーフィールドが指定されていない場合, 大域的なオプションは行全体の比較に対して適用されます.それ以外では,大域 的なオプションは,それ自身オプションが指定されていないキーフィールドに継 承されます.`-b',`-d',`-f',そして`-i'オプションは, @env{LC_CTYPE}ロケールに従い,文字を分類します.
strtod
を使用します.これで,
1.0e-34
と10e100
のような浮動小数点の数を,科学的な表記方で
指定できます.オーバーフローや,アンダーフロー,変換エラーは報告しません.
以下の対照の順序を使用します.
sort -n
は,浮動小数点の数を表現する文字列を比較するため,慣習的と
は思われない手法を使用します.最初にそれぞれの文字列をC double
形
式に変換して,それらの値を比較するのではなく,ソートは,2つの文字列の小
数点文字を一列に並べて,一度に文字の列を比較します.このアプローチを使う
1つの利益は速度です.実際には,それは,2つの対応する文字列を倍精度浮動小
数点に(または,文字列を整数に)変換し,倍精度浮動小数点を比較するより効率
的です.更に,精度に対応する損失はありません.それぞれの文字列を比較前に
double
に変換することは,ほとんどのシステムで16桁程度に精度が制限
されるでしょう.
前置される`+'も,指数表記も認識されません.そのような文字列を数値的
に比較するために,`-g'オプションを使用してください.
その他のオプションは以下の通りです.
sort
はそれを,ソート
前に一時ファイルにコピーし,output-fileに出力を書き出します.
sort
はそれを,フィールド` foo'と
` bar'に分離します.フィールドセパレータは,フィールドの前やフィー
ルドの後の部分とは考えられません.
更に,GNU sort
が正確に1つの引数で呼び出されたとき,オプション
`--help'と`--version'は認識されます.See section 共通のオプション.
歴史的な(BSDとSystem Vの)sort
の実装は,いくつかのオプションの解釈
で異なり,特に,`-b',`-f'と`-n'です.GNU sort
は,
POSIXの動作に従い,それは通常(常にではない!)System V の動作に似てい
ます.POSIXによると,`-n'は,もはや`-b'を暗示しません.一
貫性のため,`-M'も同様に変更されました.これは,分かりにくい場合の
フィールドの指定で,文字の位置の意味に影響するかもしれません.唯一の訂正
は,明示的に`-b'を加えることです.
`-k'や`+'オプションを用いたソート時のフィールド指定の位置は, `f.c'形式を持ち,fは使用するフィールド数で, cは(`+pos'に対する)フィールドの最初から,または, (`-pos'に対する)前のフィールドの終りからの,最初の文字数です. `.c'が省略された場合,フィールドの最初の文字を用います. `-b'オプションが指定された場合,指定したフィールドの`.c' の部分は,(`+pos'に対する)フィールドの最初の空白ではない文字 から,または,(`-pos'に対する)前のフィールドから続く最初の空 白ではない文字から数えます.
ソートキーオプションは,オプション文字`Mbdfinr'を加えることが可能で, その場合,大域的な順序オプションは,特定のフィールドに使用されません. `-b'オプションは,指定したフィールドの`+pos'と `-pos'の部分の,一方または両方に独立に適用され,大域的なオプ ションを継承する場合,両方に適用されます.キーは複数のフィールドに跨るこ とができます.
ここに,様々なオプションの組合せを紹介する例があります.その中で,ソート キーを指定するためのPOSIX `-k'オプションが,時代遅れの `+pos1-pos2'構文の代わりに使用されています.
sort -nrアルファベット順に,最初と2番目のフィールドを除いてソートします.これは, フィールド3から始まり,それぞれの行の終りまで続く文字で構成された,単一 のキーを使用します.
sort -k3
sort -t : -k 2,2n -k 5.3,5.4`-k 2,2'の代わりに`-k 2'と書いた場合,`sort'は2番目のフィー ルドで始まり,行の終りまで続く全ての文字を,主要な数値キーとして 使用することに注意してください.アプリケーションのほとんど大多数に対し, 数値として1フィールド以上に跨って扱うキーは,期待したものではないでしょ う. また,`n'の修飾は,最初のキーに対し,フィールドの終りを指定するもの に適用されることに注意してください.それは,`-k 2n,2'や`-k 2n,2n'を指定することと同じです.全ての修飾は,`b'が関連する フィールドに適用されることを期待し,修飾文字がフィールドの最初と/また は,キー指定のフィールドの終りに適用されるかどうかに依存しません.
sort -t : -k 5b,5 -k 3,3n /etc/passwd代わりに,大域的な数値の修飾`-n'を使用します.
sort -t : -n -k 5b,5 -k 3,3 /etc/passwd
find src -type f -print0 | sort -t / -z -f | xargs -0 etags --appendこの場合,`-print0',`-z'と`-0'の使用は,Line Feed 文字を 含むパス名がソート処理で分かれないようにします. 最後に,前後の空白を無視するため,`b'修飾を最初のキーに対しフィール ドの終りの指定に適用できます.
sort -t : -n -k 5b,5b -k 3,3 /etc/passwdまたは,大域的な`-b'修飾を`-n'の代わりに使用し,2番目のキー指 定に`n'を明示します.
sort -t : -b -k 5,5 -k 3,3n /etc/passwd
uniq
: ファイルのユニーク化
uniq
は与えられたファイル,または与えられない場合や`-'の
input名に対し,ユニークな行を書き出します.概要です.
uniq [option]... [input [output]]
デフォルトで,uniq
はソートされたファイルのユニークな行を出力し,
すなわち,一意に識別可能な行以外を全て削除します.オプションで,そうする
代わりに,1度しか現われない行を表示したり,1度以上現われる行を表示したり
できます.
入力ファイルはソートされている必要があります.入力がソートされていない場
合,おそらくsort -u
を使用したいと思います.
outputファイルが無い場合,uniq
は標準出力に書き出します.
このプログラムは,以下のオプションも受け入れます.section 共通のオプション, も参照してください.
comm
: 2つのソートされた行と行の比較
comm
は,2つの入力ファイルの共通の行とユニークな行を標準出力に書き
出します.`-'のファイル名は標準有力を意味します.概要です.
comm [option]... file1 file2
comm
を使用する前に,@env{LC_COLLATE}で指定された対照表の順に入力
ファイルをソートする必要があり,後置される改行が重要です.入力ファイルが
改行文字で終らない場合,改行は暗黙に付加されます.オプションを用いない
sort
コマンドは,comm
の入力に適したファイルを常に出力します.
オプションが無い場合,comm
は3列の出力を生成します.列の1は
file1のユニークな行を含み,列の2はfile2のユニークな行を含み,
列の3は両方のファイルに共通な列を含みます.これ無は単一のTAB文字で分けら
れます.
オプションの`-1',`-2'と,`-3'は,対応する列の出力を抑制 します.section 共通のオプション,も参照してください.
他の比較ユーティリティと異なり,comm
は比較の結果に依存しない終了
ステータスがあります.上記の通常の比較で,comm
はゼロのコードで終
了します.エラーがあった場合,ゼロでないステータスで終了します.
tsort
: 位相幾何学的なソート
tsort
は,位相幾何学的なソートを,与えられたファイルや,入力ファイ
ルが与えられない場合や`-'のファイルに対しては標準入力で実行します.
概要です.
tsort [option] [file]
tsort
は,その入力を文字列の組として読み込み,空白で分離し,それは
不完全な順序で示されています.出力は,与えられた不完全な順序に対応する完
全な順序です.
例えば以下のようにします.
tsort <<EOF a b c d e f b c d e EOF
これは以下の出力を生成します.
a b c d e f
tsort
は入力で円を検出し,出現した最初の円を標準エラーに書き出しま
す.
与えられた不完全な順序が,一般に唯一の完全な順序でないことに注意してくだ さい.
オプションは,`--help'と`--version'のみです.See section 共通のオプション.
ptx
: 並べ替えた索引の生成
ptx
は,テキストファイルを読み込み,その内容のそれぞれのキーワード
を用いて,並べ替えられた索引を本来は生成します.呼び出しの形態は以下の1
つです.
ptx [option ...] [file ...] ptx -G [option ...] [input [output]]
`-G'(または同等の: `--traditional')オプションは,全てのGNU拡張
を利用不可にし,伝統的なモードに切替え,そのため,いくつかの制限と,プロ
グラムのオプションデフォルト値を変更します.`-G'が指定されていない
場合,GNU拡張は常に利用可能です.ptx
のGNU拡張は,このドキュメント
に適切に文章化されています.完全なリストは,See section ptx
のGNU拡張.
個別のオプションは,以下のセクションで説明されます.
GNU拡張が利用可能なとき,ゼロ,1つまたは複数のfileが,オプションの 後にあります.fileが無い場合,プログラムは標準入力から読み込みます. 1つまたは複数fileある場合,全ての入力ファイルが連結されているかの ように,その回で全て読み込まれる入力ファイル名を与えます.しかし,それぞ れのファイルの間に完全に文脈の終りが有り,自動的な参照が要求されるとき, ファイル名と行番号は,入力ファイルの個別のテキストを参照します.全ての場 合で,プログラムは並べ替えられた索引を標準出力に書き出します.
GNU拡張が利用可能でないとき,すなわち,伝統的なモードでプログラム
が動作しているとき,ゼロ,1つまたは2つのパラメータがオプションの後にあり
ます.パラメータが無い場合,プログラムは標準入力を読み込み,標準出力に並
べ替えた索引を生成します.1つのパラメータのみの場合,それは標準入力の代
わりに読み込まれるテキストinputを指名します.2つのパラメータが与え
られた場合,それらはそれぞれ,読み込まれるinputファイル名と,生成
するoutputファイル名を与えます.この場合,2番目のパラメータとして
与えられるファイルの内容が壊れることに十分注意してください.この
動作は,出力パラメータを妨げるGNU標準がオプションで導入されたのではない
ので,System V ptx
互換のみにより規定されています.
あらゆるファイルは,オプション値や入力テキストファイルとして指 名され,単一のダッシュ-は使用でき,その場合標準入力と考えられます. しかし,プログラムの呼び出しに1回以上,この慣習を使用する意味はありませ ん.
ptx
に対する全てのGNU拡
張を利用不可にし,伝統的なモードに切替えます.
現在セットアップされているので,プログラムは,入力ファイルが8ビットISO
8859-1コードを使用して符号化されていると考え,Latin-1文字セットだという
ことも分かりますが,それは,MS-DOSでコンパイルされていない場合で,
その場合はIBM-PCの文字セットを使用します.(GNU ptx
は,より小さい
MS-DOSマシンで働く方法を知りません.) 7-bit ASCIIに比べて,文字であ
る文字セットは異なっていて,この事実は正規表現の一致の動作を変更します.
そのため,キーワードに対するデフォルトの正規表現で,外国や発音記号の文字
が可能となります.しかし,キーワードのソートはそのままです.それは,全く
盲目的に基礎的な文字セットの順序に従います.
ptx
が
使用され,インストール時に変更されていない場合,通常は
`/usr/local/lib/eign'で見つかります.デフォルトの無視ファイルの影響
を無くしたい場合,代わりに/dev/null
を指定してください.
[.?!][]\"')}]*\\($\\|\t\\| \\)[ \t\n]*GNU拡張が使用不可能なときや,`-r'オプションが使用されている場合は, 常に行の終りが使用され,この場合デフォルトのregexpは以下のようにな ります.
\n空のregexpの使用は,行末と文の終りの認識を完全に不可能にすることと 同等です.この場合,ファイル全体が単一の大きな行や文と考えられます.ユー ザは,オプション`-F ""'を通じて,全ての切り詰めフラグの生成を,不許 可にしたい場合もあります.See section `Syntax of Regular Expressions' in The GNU Emacs Manual. キーワードが入力行や文の最初で発生したとき,出力文脈の行の最初に利用され ない領域を作成することが良くあります.キーワードが入力行や文の終り近くで 発生したとき,出力文脈の行の終りに利用されない領域を作成することが良くあ ります.プログラムは,その中の文脈の周りを包むことで,それらの領域を補充 しようとします.入力行や文の頭は,出力行の右の利用されていない行を補充す るために使用されます. ユーザの利便性の問題として,C言語で見つかる,多くの通常のバックスラッシュ されたエスケープ・シーケンスは認識され,
ptx
自身によって対応する文
字に変換されます.
ptx
自身によって対応する文
字に変換されます.
出力書式は,主に`-O'と`-T'オプションで制御され,それは以下の表
で記述されています.`-O'も`-T'も選択されていないときで,GNU拡
張が利用可能な場合,プログラムは dumb 端末に適した出力書式を選択します.
それぞれのキーワードの発生は,出力を行の中心にし,周りをその左右の文脈で
囲います.それぞれのフィールドは適切に正当化されるので,用語索引の出力は
容易に観察できます.特別な特徴として,自動的な参照がオプション`-A'
で指定されていて,左の文脈の前に出力されている,すなわち,オプション
`-R'が選択されていない場合,コロンが参照の後に追加されます.
これは,GNU Emacsがnext-error
を処理することでうまく作用します.こ
のデフォルト出力書式では,改行やタブのようなそれぞれの空白文字は,正確に
1つのスペースに単に変換され,連続したスペースの圧縮は特に試みません.こ
れは将来変更されるかも知れません.これらの空白文字以外の,256文字の基本
セットの全ての他の文字は逐語的に転送されます.
出力書式は,以下のオプションで更に制御されます.
ptx
自身によって,対応す
る文字に変換されます.
nroff
,troff
やTeXに適した出力を生成している間,
`xx'の代わりに,使用する他のstringを選択します.
nroff
やtroff
の処理に適した出力書式を選択します.それぞれの
出力行は以下のようになります.
.xx "tail" "before" "keyword_and_after" "head" "ref"それで,出力の植字を処理するための,`.xx' roffマクロを書くことが可 能になります.GNU拡張が利用不可能な場合,これはデフォルト出力です.オプ ション`-M'は,`xx'を他のマクロ名に変更するために利用可能です. この出力形式で,改行やタブのようなそれぞれの表示不可能な文字は,連続した スペースを圧縮するという特別な試みを行わず,正確に1つのスペースに単に変 換されます.それぞれの引用文字:"は2重になるので,
nroff
や
troff
で正しく処理されます.
\xx {tail}{before}{keyword}{after}{head}{ref}それで,出力の植字の処理するための
\xx
定義を書くことが可能になりま
す.参照が生成されないとき,すなはち,オプション`-A'もオプション
`-r'も選択されていないとき,それぞれの\xx
の最後のパラメータ
が抑制されることに注意してください.オプション`-M'は,`xx'を他
のマクロ名に変更するために利用可能です.
この出力書式では,$,%,&,#そして_のよう
な,いくつかの特殊文字は,自動的にバックスラッシュで保護されます.弓カッ
コの{,}もバックスラッシュで保護されますが,数学モードを強
制するドル記号の組でも囲まれます.バックスラッシュ自身は
\backslash{}
の並びを生成します.曲折アクセント記号とティルデ分
音記号は,^\{ }
と~\{ }
の並びをそれぞれ生成します.その
他の基礎となる文字セットの分音文字は,適切なTeXの並びを可能な限り生成
します.改行とタブのようなその他の表示不可能な文字と,ASCIIではない
全ての他の文字は,連続したスペースを圧縮するという特別な試みを行わず,1
つのスペースに単に変換されます.これらの特殊文字をTeXで処理する改善方
法を知らせてください.
ptx
のGNU拡張
このptx
のバージョンには,System V ptx
には存在しないいくつ
かの特徴があります.これらの拡張された特徴は,他のコマンドラインオプショ
ンで優先されない場合,`-G'コマンドラインオプションを使用して抑制さ
れます.GNU拡張には,優先で元に戻すことができないものがあり,そのため,
GNU拡張を気にする場合,簡単な規則で`-G'を避けるはずです.ここに,こ
のプログラムとSystem V ptx
の間の違いがあります.
ptx
は,1つ
のみファイルを読み込み,結果を標準出力に書き出すか,2番目のfileパ
ラメータがコマンドで与えられている場合は,そのfileに書き出します.
オプションで導入されない出力パラメータがあるということは,GNUができる限
り避ける全く危険な操作です.そのため,GNUとSystem Vの間の移植性のある
ptx
を使用するため,単一の入力ファイルで常に使用することに注意を払
い,常に標準出力で結果を期待するべきです.配置するものが`-G'を受け
入れるptx
がインストールされていることが分かった場合,ptx
を
使用した製品でのptx
の呼び出しで,`-G'オプションを自動的に配
置したいと思うかもしれません.
ptx
でのみ利用可能なオプションは,`-b',`-f',
`-g',`-i',`-o',`-r',`-t'と`-w'です.全
ての他のオプションはGNU拡張で,この列挙では繰り返しません.さらに,GNU拡
張が利用可能なとき,わずかに意味が異なるオプションもあり,以下で記述しま
す.
troff
やnroff
に対して書式化され
ません.それはむしろ,dumb端末に対する出力です.troff
や
nroff
の出力は,オプション`-O'を通じて選択可能です.
ptx
は8ビット文字を受け入れず,いくつかの制御文字は削除され,チ
ルダ~は処分されます.
ptx
は,それぞれの行の最初の200文字の
み処理します.
ptx
を模倣しようとしますが,
このプログラムが完全に再現していない,わずかな配置不備もまだあります.
ptx
では許可されません.
Go to the first, previous, next, last section, table of contents.