-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
に注意してください 、 o
と d
最初のセットでは、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