これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド trposix です。
プログラム:
NAME
tr — 文字を翻訳する
SYNOPSIS
tr [−c|−C] [−s] string1 string2
tr −s [−c|−C] string1
tr −d [−c|−C] string1
tr −ds [−c|−C] string1 string2
DESCRIPTION
当学校区の tr ユーティリティは、置換を使用して標準入力を標準出力にコピーするか、
選択した文字の削除。 指定されたオプションと string1 string2
オペランドは、文字と単一のコピー中に発生する変換を制御します。
文字照合要素。
OPTIONS
当学校区の tr ユーティリティは、POSIX.1‐2008の基本定義ボリュームに準拠する必要があります。 セクション 12.2,
ユーティリティ 構文 ガイドライン.
次のオプションがサポートされます。
−c で指定された値のセットを補完します。 string1。 詳しい説明を参照
のセクションから無料でダウンロードできます。
−C で指定された文字セットを補完します。 string1。 拡張版を参照
説明セクション。
−d で指定された入力文字をすべて削除します。 string1.
−s 説明に従って、繰り返される文字のインスタンスを単一の文字に置き換えます。
詳細な説明セクションを参照してください。
オペランド
次のオペランドがサポートされます。
string1, string2
翻訳制御文字列。 各文字列は文字のセットを表すものとします。
翻訳に使用される文字の配列に変換されます。 のために
文字列がどのように解釈されるかについての詳細な説明は、EXTENDED を参照してください。
説明セクション。
標準入力
標準入力には、任意の種類のファイルを使用できます。
入力 ファイル
なし。
ENVIRONMENT 変数
次の環境変数は、の実行に影響を与えます。 tr:
言語 設定されていない、または設定されていない国際化変数のデフォルト値を指定します
ヌル。 (POSIX.1‐2008の基本定義ボリュームを参照してください。 セクション 8.2,
国際化 変数 国際化の優先順位について
ロケールカテゴリの値を決定するために使用される変数。)
LC_ALL 空でない文字列値に設定されている場合は、他のすべての値を上書きします
国際化変数。
LC_COLLATE
範囲式と等価性の動作のロケールを決定する
クラス。
LC_CTYPE テキストデータのバイトシーケンスを解釈するためのロケールを決定します
文字として(たとえば、のマルチバイト文字ではなくシングルバイト
引数) と文字クラスの動作。
LC_MESSAGES
の形式と内容に影響を与えるために使用する必要があるロケールを決定します
標準エラーに書き込まれる診断メッセージ。
NLSパス の処理のためのメッセージカタログの場所を決定します LC_MESSAGES.
非同期 イベント
デフォルト。
標準出力
当学校区の tr 出力は、指定されたものを除き、入力と同一でなければなりません。
変換。
標準
標準エラーは、診断メッセージにのみ使用されます。
出力 ファイル
なし。
拡張済み DESCRIPTION
オペランド string1 string2 (指定されている場合) 文字の XNUMX つの配列を定義します。 の
次のリストの構成要素は、文字または単一文字を指定するために使用できます。
照合要素。 いずれかの構成要素が複数文字の照合要素になる場合、
tr 診断を行わずに、結果として得られる結果からそれらの複数文字要素を除外するものとします。
アレイ。
文字 以下の規則のいずれかで記述されていない文字は、次の文字を表します。
そのもの。
\8進数 XNUMX 進シーケンスを使用すると、特定のコード値を持つ文字を表すことができます。
XNUMX 進数シーケンスは次のもので構成されます。 続いて最長の
01234567、XNUMX、または XNUMX 桁の XNUMX 進数文字のシーケンス (XNUMX)。 シーケンス
エンコードが XNUMX、XNUMX、または XNUMX で表される値を生成します。
配列に配置される XNUMX 進整数。 マルチバイト文字には必要なものがあります
このタイプの複数の連結されたエスケープ シーケンス (先頭のエスケープ シーケンスも含む)
バイトごとに。
\文字
の- POSIX.1-2008 の基本定義ボリュームのエスケープ シーケンス、
表 5-1, エスケープ シーケンス 関連する ('\\', '\NS', '\NS', '\NS',
'\ n', '\NS', '\t', '\ v')をサポートするものとします。 他のものを使用した結果
に続く XNUMX 進数字以外の文字は不特定です。
また、次の文字がない場合は、 、結果は次のとおりです
不特定。
c - c POSIX ロケールでは、この構造は照合範囲を表します。
範囲の端点間の要素 (どちらの端点も XNUMX 進数でない限り)
\ 形式のシーケンス8進数) (照合シーケンスで定義されたものを含む)。
範囲内の文字または照合要素は配列に配置されます。
昇順の照合順序で。 XNUMX 番目のエンドポイントが開始エンドポイントよりも前にある場合
照合順序のエンドポイントの範囲が指定されるかどうかは未指定です。
照合要素が空であるか、この構成は無効として扱われます。 ロケール内
POSIX ロケール以外の場合、この構成体の動作は未指定です。
範囲のエンドポイントのいずれかまたは両方が \ 形式の XNUMX 進数シーケンスである場合8進数,
これは、XNUMX つの範囲間の特定のコード化された値の範囲を表します。
エンドポイントも含みます。
[:class:] 定義された文字クラスに属するすべての文字を定義どおりに表します。
の現在の設定により、 LC_CTYPE ロケールカテゴリ。 次のキャラクター
クラス名は、次のように指定された場合に受け入れられます。 string1:
アルナム ブランク 桁 下側 ポイント アッパー
アルファ コントロール グラフ 印刷 スペース x桁
さらに、[:] 形式の文字クラス式も使用できます。名:] そうなるでしょう
ロケールで認識される 名 キーワードには 文字クラス
の定義 LC_CTYPE カテゴリ。
両方の場合 −d −s オプションが指定されている場合、任意の文字クラス名が指定されています
で受け入れられます string2。 それ以外の場合は、文字クラス名のみ 下側 or
アッパー で有効です string2 そして、対応する文字クラスの場合にのみ、
(アッパー 下側、それぞれ) は、同じ相対位置で指定されます。
string1。 このような仕様は、事件の要求として解釈されるものとします。
会話。 いつ [:下側:] が表示されます string1 と [:アッパー:] が表示されます string2,
配列には、 トッパー でのマッピング LC_CTYPE
現在のロケールのカテゴリ。 いつ [:アッパー:] が表示されます string1 と [:下側:]
に現れる string2、配列には、 低い
でのマッピング LC_CTYPE 現在のロケールのカテゴリ。 からの最初のキャラクター
各マッピング ペアは配列内に存在する必要があります。 string1 そしてXNUMX番目のキャラクター
各マッピング ペアからの配列は次のとおりです。 string2 同じ親戚の中で
位置。
大文字と小文字の変換を除き、文字クラスで指定された文字
式は、不特定の順序で配列に配置されます。
に指定された名前の場合、 class で有効な文字クラスが定義されていません。
現在のロケールでは、動作は未定義です。
[=同等=] 同じに属するすべての文字または照合要素を表します
等価クラス 同等の現在の設定によって定義されます。 LC_COLLATE
ロケールカテゴリ。 等価クラス式は以下でのみ許可されます。
string1、またはで string2 組み合わせて使用する場合 −d −s オプション。
同値クラスに属する文字は配列に配置されます。
不特定の順序で。
[x*n]を表します。 n キャラクターの繰り返しの出現 x。 なぜならこの表現は
複数の文字を XNUMX つにマッピングするために使用されます。これが使用される場合にのみ有効です。
string2。 場合 n が省略されるかゼロの場合、それは十分大きいものとして解釈されます。
延長する string2-ベースのシーケンスを長さまで string1-ベースのシーケンス。
If n 先頭にゼロがある場合は、XNUMX 進数値として解釈されます。 さもないと、
これは XNUMX 進数値として解釈されます。
時 −d オプションが指定されていません:
* もしも string2 が存在する場合、次で指定された配列内で見つかった各入力文字 string1
配列内の同じ相対位置にある文字に置き換えられます。
によって指定された string2。 で指定された配列の場合、 string2 より短いです
によって指定された string1、または文字が複数回出現する場合 string1、 結果
指定されていません。
*の場合 −C オプションが指定されている場合、指定された文字の補数 string1
(現在の文字セットで定義されているすべての文字のセット
の設定 LC_CTYPEで実際に指定されているものを除きます。 string1 オペランド)
現在の定義に従って、昇順の照合順序で配列に配置されます。
の設定 LC_COLLATE.
*の場合 −c オプションが指定されている場合、で指定された値の補数 string1 条
バイナリ値の昇順で配列に配置されます。
※文字クラス式や文字クラスで指定した文字の順序は
等価クラス式は未定義です。そのような式は次の場合にのみ使用してください。
目的は、複数の文字を XNUMX つにマッピングすることです。 例外は大文字と小文字の変換です。
前に説明しました。
時 −d オプションが指定されています:
* で指定された配列内で見つかった文字を入力します string1 は削除されるものとします。
*時 −C オプションはで指定されます −d、で指定された文字を除くすべての文字
string1 は削除されるものとします。 の内容 string2 次の場合を除き、無視されます。 −s オプションがある
も指定。
*時 −c オプションはで指定されます −d、で指定された値を除くすべての値 string1
は削除されるものとします。 の内容 string2 次の場合を除き、無視されます。 −s オプションがある
も指定。
※両方に同じ文字列を使用することはできません。 −d と −s オプション; 両方のオプションの場合
両方が指定されています string1 (削除に使用) および string2 (絞りに使用)
必要とされます。
時 −s オプションが指定されている場合、削除または変換が行われた後、
同じ文字の繰り返しシーケンスは、同じ文字の XNUMX 回の出現によって置き換えられます。
最後のオペランドで指定された配列内で文字が見つかった場合は文字。 もし
最後のオペランドには、次の例のような文字クラスが含まれます。
tr −s '[:空:]'
最後のオペランドの配列には、その文字クラスのすべての文字が含まれます。
ただし、前述したように、次のような大文字と小文字の変換では、
tr −s '[:アッパー:]' '[:低い:]'
最後のオペランドの配列には、XNUMX 番目のオペランドとして定義された文字のみが含まれます。
それぞれの文字 トッパー or 低い 必要に応じて文字ペア。
に使用される空の文字列 string1 or string2 未定義の結果を生成します。
EXIT ステータス
次の終了値が返されます。
0 すべての入力が正常に処理されました。
> 0エラーが発生しました。
結果 OF エラー
デフォルト。
当学校区の フォロー中 セクション 有益です。
お申込み USAGE
必要ならば、 string1 string2 シェルによるパターンマッチングを避けるために引用符で囲むことができます。
通常の数字 (それ自体を表す) が XNUMX 進数のシーケンスに続く場合、XNUMX 進数は
曖昧さを避けるために、シーケンスでは XNUMX 桁全体を使用する必要があります。
日時 string2 よりも短いです string1、歴史的な System V との間に違いが生じます。
BSD システム。 BSD システムパッド string2 で見つかった最後の文字で string2。 したがって、それは
次のことが可能です:
tr 0123456789 d
これはすべての数字を文字に変換します 'NS'。 この地域は特にあるので、
POSIX.1-2008 のこのボリュームでは指定されていませんが、BSD と System V の動作は両方とも
許可されていますが、準拠するアプリケーションは BSD の動作に依存できません。 そうする必要があります
この例を次のようにコード化します。
tr 0123456789 「[d*]」
外観の類似性にもかかわらず、次の関数で使用される文字列オペランドは、
tr は正規表現ではありません。
一部の歴史的な実装とは異なり、この定義は tr 正しくユーティリティ
入力ストリーム内の NUL 文字を処理します。 NUL 文字は、以下を使用して削除できます。
tr −d '\000'
例
1. 次の例では、次のすべての単語のリストを作成します。 file1 XNUMX行にXNUMXつずつ file2,
ここで、単語は最大の文字列とみなされます。
tr −cs "[:アルファ:]" 「[\n*]」 <ファイル1 >ファイル2
2. 次の例では、すべての小文字を変換します。 file1 大文字に変換して書き込みます
結果を標準出力に。
tr "[:低い:]" "[:アッパー:]" <ファイル1
3. この例では、等価クラスを使用して、基本語のアクセント付きバリアントを識別します。
文字 「e」 in file1、発音区別符号が取り除かれ、次のように書き込まれます。 file2.
tr 「[=e=]」 「[e*]」 <ファイル1 >ファイル2
理論的根拠
一部の初期の提案では、明示的なオプション −n 履歴を無効にするために追加されました
入力から NUL 文字を削除する動作。 自動的にそう思われていた
入力から NUL 文字を削除する機能は正しくありませんでした。 しかし
の除去 −n 後の提案では、次の要件は削除されません。 tr
入力ストリーム内の NUL 文字を処理します。 NUL 文字は次のように削除できます。 tr −d
「\000」。
歴史的な実装 tr 構文と動作が大きく異なります。 たとえば、
BSD バージョンでは、繰り返しシーケンスに括弧文字は必要ありません。 の tr
ユーティリティの構文は、System V および XPG3 モデルにより密接に基づいています。
過去の BSD 実装に対応します。 ショートの場合は string2 パディング、
決定は、動作を指定せず、System V および XPG3 スクリプトを保存することでした。
BSD メソッドの難しさを見つけてください。 BSD ユーザーが tr する必要があります
ここで定義されている構文を満たすように調整してください。 を使用することが可能ですので、
繰り返しシーケンスを使用して目的の動作を再現しますが、簡単な方法はありません。
System V メソッドを達成するには、これは、望ましくないとしても、正しいアプローチでした。
XNUMX 進数値を使用して制御文字を指定することには歴史的な前例がありますが、
ポータブルではありません。 制御文字のエスケープ シーケンスの導入は、
必要な携帯性を提供します。 これにより歴史的な問題が発生する可能性があることが認識されています。
壊れるスクリプト。
初期の提案には、複数文字の照合要素のサポートが含まれていました。 指摘されました
それを外に出しながら、 tr RE の構文要素をいくつか採用していますが、その目的は tr は結構
違う; たとえば、範囲には同様の意味がありません (「範囲内の文字のいずれか)」
範囲一致'', 対 範囲内の各文字を出力に変換します
片方'')。 その結果、以前に含まれていた複数文字照合のサポートが
要素が削除されました。 残っているのは、現在の照合順序の範囲です (サポートするため、
アクセント付き文字など)、文字クラス、および等価クラス。
XPG3 では [:class:] と [=同等=] 規則は、RE のように二重括弧で示されます。
構文。 しかし、 tr RE 原則を実装していません。 構文の一部を借用しているだけです。
その結果、 [:class:] と [=同等=] は同等の構文要素としてみなされる必要があります
と [x*n]、これは RE 括弧式ではありません。
標準開発者は、次の変更を検討します。 tr 文字を翻訳できるようにする
異なる文字エンコーディング間で使用できるようにするか、新しいユーティリティを提供することを検討します。
これを達成します。
従来の System V システムでは、範囲式を角括弧で囲む必要があります。
といった:
tr 「[az]」 「[AZ]」
ただし、BSD ベースのシステムでは括弧は必要なかったため、ここではこの規則が使用されます。
多数の BSD スクリプトの破損を避けるために:
tr AZ AZ
上記の System V スクリプトは、括弧が次のように扱われるため、引き続き機能します。
通常の文字はそれ自体に変換されます。 ただし、System V スクリプトは、
頼った 「あ~ず」 XNUMX人のキャラクターを表す 'A', '−', 'z' 書き直さなければならない
as 「あ~」.
ISO POSIX-2:1993 標準には、 −c と同様に動作するオプション −C オプションですが、
と同等の機能を提供していませんでした。 −c POSIX.1-2008 で指定されたオプション。 これ
を指定できるという歴史的な慣行を意味しました。 tr −cd\000−\177 (つまり
最上位ビットが設定されたすべてのバイトを削除する) は、C ロケールでは効果がありません。
200 進数 377 ~ XNUMX 進数 XNUMX の値を持つバイトは文字ではありません。
以前のバージョンでは、XNUMX 進シーケンスは照合要素を参照し、
マルチバイト文字を指定するには、互いに隣接して配置できます。 しかし、それは
これにより曖昧さが生じることに注意しました。 tr 隣接しているかどうかはわかりません
XNUMX 進シーケンスはマルチバイト文字または複数のシングルバイトを指定することを意図していました
文字。 POSIX.1-2008 では、XNUMX 進数のシーケンスは常に XNUMX バイトの XNUMX 進数を参照することが指定されています
照合要素の範囲のエンドポイントを指定するために使用される場合の値。
この標準の以前のバージョンでは、XNUMXバイト以外の実装が可能でした
ビットですが、これはこのバージョンで変更されています。
未来 道順
なし。
onworks.net サービスを使用して trposix をオンラインで使用する