Skip to content

Instantly share code, notes, and snippets.

@Tpaefawzen
Last active January 11, 2024 08:12
Show Gist options
  • Select an option

  • Save Tpaefawzen/69bfffddc545b7e9290608b8569af491 to your computer and use it in GitHub Desktop.

Select an option

Save Tpaefawzen/69bfffddc545b7e9290608b8569af491 to your computer and use it in GitHub Desktop.
POSIX.1-2017のsortを日本語でmdoc(7)で
.Dd January 9, 2024
.Dt SORT 1
.Os IEEE Std 1003.1-2017
.Sh 名前
.Nm sort
.Nd テキストファイルを並べ替え、結合、または並べ替え済みかどうか確認
.Sh 書式
.Nm
.Op Fl m
.Op Fl o Ar output
.Op Fl bdfinru
.Op Fl t Ar char
.Oo Fl k Ar keydef Oc ...
.Op Ar file ...
.Nm
.Op Fl c | Fl C
.Op Fl bdfinru
.Op Fl t Ar char
.Op Fl k Ar keydef
.Op Ar file
.Sh 説明
.Nm
ユーティリティは、以下いずれかの操作を行います。
.Bl -enum
.It
全てのファイルの各行を一緒に並べ替え、その結果を指定された出力に書き出す。
.It
事前に並べ替えが行われた全てのファイルの各行を結合し、その結果を指定された出力に書き出す。
.It
ひとつの入力ファイルについて、正しく並べ替えられているかどうかを確認する。
.El
入力の各行から抽出されたひとつ以上の並べ替えキーに基づいて並べ替えのために比較されます。
ただし、キーが指定されていない場合は各行の全ての内容のうち、最後の
.Aq 改行
を除いたものに基づいて比較されます。
これらの比較は、当ユーティリティ使用時のロケールのうち、順序づけにより行われます。
もしもこの比較順が一部の文字について不完全な場合は
.Po
XBDの
.Lk https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_02 LC_COLLATE
も参照
.Pc
、その比較結果で順序が同じとされた行については各バイト単位でPOSIXロケールにおける順序づけを用いて比較されるべきです。
.Sh オプション
.Nm
ユーティリティは、XBDの
.Lk https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02 ユーティリティ書式ガイドライン
の第9条以外に準拠します。また、
.Fl k Ar keydef
オプションは、
.Fl bdfinr
オプション群の後に来るべきです。この他、更に、オプションの区切り文字として
.Sq \-
のほかに
.Sq +
を認識しても構いません。
.Pp
以下はサポートされるオプションのリストです。
.Bl -tag
.It Fl c
与えられた一つの入力ファイルが、引数で指定された通りに並べ替えられているのかを確認します。この時、現在のロケールにおける順序づけに従います。標準出力に何も出力されません。終了コードにより、並べ替えが正しく行われていないことが検出、ならびにエラーが発生したことを示します。並べ替えが正しくないこと
.Po
または、
.Fl u
がある場合はキーが重複している行があること
.Pc
が検出された場合、該当の箇所を示す警告メッセージが標準エラーに送られます。
.It Fl C
.Fl c
と同様ですが、並べ替えが正しくない場合、または
.Fl u
が使われている場合でキーが重複している行がある場合、警告メッセージは標準エラーに送られません。
.It Fl m
結合のみを行います。すなわち、入力ファイルは事前に並べ替えが行われたものと仮定されます。
.It Fl o Ar output
標準出力の代わりに使う出力ファイルの名前を指定します。入力ファイル
.Ar file
と同じものも指定できます。
.It Fl u
ユニークモードです。各行において同じキーの複数の行の出力のうちひとつを残して出力を抑制します。
.Fl c
オプションと同時に使用した場合は、入力ファイルが正しく並べられているかどうかに加えてキーが重複している行がないかどうかも確認します。
.El
以下のオプションは、既定の並べ替えの規則を上書きします。並べ替えに関するオプションがキーフィールドの指定とは別に使われている場合、要求されたフィールドの並べ替えの規則が全ての並べ替えのキーについて適用されます。ただし、特定のキーに付属している場合
.Pq Fl k を参照
、指定された並べ替えのオプションはそのキーについては優先的に上書きされます。
.Bl -tag
.It Fl d
現在の
.Ev LC_CTYPE
における
.Aq 空白
文字と英数字のみを比較対象とします。ただし、
.Fl i
や
.Fl n
と同時に適用されている並べ替えのキーに対しては未定義処理となります。
.It Fl f
現在の
.Ev LC_CTYPE
に基づき、全ての小文字を対応する大文字と同じものと見なして比較します。
.It Fl i
現在の
.Ev LC_CTYPE
に基づき、印刷文字でない文字を無視します。ただし、
.Fl n
も適用されている並べ替えのキーに対しては未定義処理となります。
.It Fl n
並べ替えのキーを最初の数値文字列に制限します。この文字列は任意の
.Aq 空白
類、任意の
.Aq ハイフンマイナス
文字、ならびに0桁以上の数字に任意の進数指定文字と現在のロケールで定義されている3桁ごとの桁区切り文字で構成されます。このキーは数値として比較されます。空文字列の数値文字列はゼロとして取り扱われます。列頭の複数のゼロとゼロに与えられている符号は順序づけには影響されません。
.It Fl r
比較順が逆順となります。
.El
フィールドの区切り文字は以下のオプションで変更できます。
.Bl -tag
.It Fl b
制限された並べ替えのキーの始点と終点を決めるときに、最初の
.Aq 空白
文字を無視します。もしも
.Fl b
オプションが最初の
.Fl k
オプションより先に指定されている場合は全ての
.Fl k
オプションに適用されます。それ以外の場合は、
.Fl b
オプションは各
.Fl k Ar field_start
または
.Ar field_end
オプション引数対に個別に適用できます。
.Pq 下記参照
.It Fl t Ar char
指令された文字
.Ar char
をフィールドの区切り文字として利用します。これにより、
.Ar char
はフィールドの一部としては見なされなくなります。
.Pq ただし、この文字を並べ替えのキーに含むことは可能です。
各
.Ar char
の出現順は見なされます。
.Po
例えば、
.Aq Ar char
.Aq Ar char
はフィールドなしとされます
.Pc
もしも
.Fl t
が指定されていない場合は、
.Aq 空白
文字群が既定の区切り文字として使われます。すなわち、
.Aq 空白
文字群が混ざった最長の空文字列でない部分文字列の次に非
.Aq 空白
文字がフィールドの区切り文字となります。
.El
並べ替えのキーは以下のオプションで指定されます。
.Bl -tag
.It Fl k Ar keydef
.Ar keydef
引数は制限された並べ替えのキーとするフィールドの定義です。書式は次の通りです。
.Sm off
.D1 Ar field_start Oo Ar type Oc Oo , Ar field_end Oo Ar type Oc Oc
.Sm on
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment