GNU/Linux >> Linux の 問題 >  >> Linux

tr コマンドの「-s」、「-t」、および「-c」オプションは Unix でどのように機能しますか?

-s スイッチ:スクイーズ (繰り返される文字を削除)

echo i am a good boy | tr -s good bad

出力:i am a bd bdy

これを実現する舞台裏で 2 つのことが起こっています。まず、tr の 2 番目の引数が 最後の文字よりも短い 2 番目の引数では、最初の引数と同じ長さにするために繰り返されます。したがって、同等のコマンドは次のとおりです:

echo i am a good boy | tr -s good badd

他に起こっていることは、最初の引数の文字が繰り返されると、以前の出現を上書きすることです (2 つの oo を参照しています) good の )。これにより、コマンドは次のようになります:

echo i am a good boy | tr -s god bdd

(2 番目の o d まで 置換は以前の o を上書きします a へ 交換、冗長になります)

-s なし 出力を切り替えます

i am a bddd bdy

-s で スイッチ tr 最後にリストされている繰り返し文字を「絞り込み」ます 最終出力を残す引数:

i am a bd bdy

-c スイッチ:補う

-c switch は、最初の引数の補数 (つまり、引数 1 にリストされていないすべての文字) と一致させるために使用されます。その結果、引数 1 には多くの文字 (256-3) が含まれます。ここで、前のケースと同じことが arg 2 に起こります:Arg 2 の最後の文字は、長さまたは Arg 1 に一致するように繰り返されます。したがって、元のステートメント:

echo i am a good boy | tr -c good bad

と同等です:

echo i am a good boy | tr abcefhijklmnp... baddddddddddd...

(欠落している g に注意してください 、 od 最初のセットでは、d にも注意してください 2 番目のセットの他のすべての文字を置き換えます -- スペース文字を含みます)

これが i am a good boy の理由です dddddddgoodddodd に変わります

詳細はこちら:http://www.linuxjournal.com/article/2563


-s についての理解 が正しくない場合、入力内のセット 1 の文字の繰り返し出現を単一の文字に置き換えます。たとえば、セットは変更されません。

echo i am a good boy | tr -s god bad

与える

i am a bad bay

-c オプションは、セット 1 をその補数 (つまり、セット 1 に含まれていないすべての文字のセット) に置き換えます。これを使用して、たとえば、指定した文字以外をすべて削除できます。

echo i am a good boy | tr -cd gobdy

出力

goodboy

Linux
  1. Linux AWKコマンド–LinuxおよびUnixの使用構文の例

  2. Readlinkコマンドのオプションを説明しますか?

  3. Linuxでtarコマンドを使用してファイルを圧縮および抽出する方法は?

  1. Linuxでエイリアスを作成してエイリアスコマンドを使用する方法

  2. basenameコマンドの使用方法は?

  3. 「ls」コマンドは Linux/Unix でどのように機能しますか?

  1. .bashrcの目的とそれはどのように機能しますか?

  2. コマンドオプションを覚える方法は??

  3. UnixターミナルでExitコマンドはどのように機能しますか?