2017-02-17 10 views
2

私はコード例があり、余分なフォーマットの部分があるように思われるが、いくつかのテキスト処理の終了にタック:tr -d [=、=]は何をしますか?

tr -d [=,=] 

私はこれが何をするか分からないとtrのmanページには、少しのです助けて。これが何をするのかについての洞察はありますか?

+4

として扱われる場合に[=、=] –

+0

ところで、発現が引用されるべきです'' [=、=] '''のように安全です - そうしないと、 'tr'を呼び出す前に、シェルはファイル名をグロブ結果(' '、' 'など)で置き換えることができます。 –

答えて

6

等価クラス

[=当量=] man trページ、

から構文[=C=]は順不同で、Cに等価な文字の全てに展開されます。等価クラスは、非英語アルファベットをサポートすることを意図した比較的最近の発明である。しかし、それを定義したり内容を決定するための標準的な方法はないようです。したがって、それらはGNU trで完全に実装されていません。各キャラクタの等価クラスは、そのキャラクタだけで構成されています。

POSIX trページから

この例ではdiacritical marks (WikiLink)を剥奪とfile2に書き込まれるファイルfile1のベース文字'e'のアクセント付き変異体を同定するために等価クラスを使用しています。

Iが好きすなわち
tr "[=e=]" "[e*]" <file1 >file2 

eが(é又はèいずれか)アクセントとして表される場合、FILE1に、それらは通常e

+2

もっと興味深いことに、この場合、どんな文字がコンマに似ているのだろうかと思っています:) – chepner

+0

@chepner:Yupは構文の可能な使用法を調べるために検索しました。あるいは、より一般的には、等価クラスに関する情報が本当に不足していました。あなたはいくつか知っていますか?ここで更新していただければ幸いです。 – Inian

+1

これはちょうど1の等価クラスになります。楽しみのために、私はエコーを試しましたか? | tr -d '[=?=]' '、しかし2番目の文字U + 037E GREEK QUESTION MARKは削除されませんでした。そのような等価クラスが定義されているロケールが必要なのかもしれません。そのようなロケールを使用していないのです。 – chepner

-3

==の間のコンマは削除されます。以下の出力を確認してください。

%[email protected]> echo "1==,==2==,==3=,=4=,=5" | tr -d [=,=] 
1====2====3==4==5 
%[email protected]> 

ありがとう。

+1

それは 'echo" 1,2,3,4,5 "を説明していません。 tr -d [=、=] '。 – chepner

+0

'tr'は、文脈とは無関係に各文字を評価します。周囲のコンテンツは行動に何の影響も与えません。 –

関連する問題