trコマンドのポイントは何をしますか? tr .........AZ A-ZA-Z <<< "JVPQBOV" (13点あり)

trコマンドのポイントは何をしますか? tr .........AZ A-ZA-Z <<< "JVPQBOV" (13点あり)

trrot13変換を実行したいです。私はこのコマンドをよく理解できます。

tr A-Za-z N-ZA-Mn-za-m <<< "URYC ZR CYRNFR"

どの出力がありますが、HELP ME PLEASE他のコマンドがどのように同じrot13変換を生成するかはわかりません。

tr .............A-Z A-ZA-Z <<< "URYC ZR CYRNFR"

だから、2つの質問があります。

  1. 2番目のコマンドの後に隠された魔法は何ですかtr
  2. 最初のコマンドと同様に、2番目のコマンドも小文字と大文字の両方で機能するようにするにはどうすればよいですか?

答え1

仕組みは次のとおりです。

SET1-> .............ABCDEFGHIJKLMNOPQRSTUVWXYZ
SET2-> ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLM

したがって、にtr翻訳されます。SET1SET2

13これも13個の点があるので、単位で動くという点で最初のものと同じです。

SET1小文字を含めるには、同様のオフセットでソートする必要があります。例:

.............ABCDEFGHIJKLMNOPQRSTUVWXYZ..........................abcdefghijklmnopqrstuvwxyz

ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklm

Zaとの間には大文字の半分と小文字の半分にわたって26点があります。したがって、trコマンド自体は次のようになります。

tr .............A-Z..........................a-z A-ZA-Za-za-z

答え2

@Prvt_Yadvが答えで述べたように、13のポイントがあるのでうまくいきます。

セットは次のとおりです

First set:  .............ABCDEFGHIJKLMNOPQRSTUVWXYZ
Second set: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ

ドットは特殊文字ではないので、入力内容にドットがあればそのドットも翻訳されます。私が持っているバージョンでは、tr2番目のグループの最後の対応する文字です。この場合は次のようになりますM

$ echo URYC ZR CYRNFR. | tr .............A-Z A-ZA-Z
HELP ME PLEASEM

(私が想像できる他のバージョンは、trセット2で最初に一致する文字を使用して1つを提供できますA。)

2番目の質問に答えるには、2番目のセットの残りの大文字を「使用」するには、最初のセットの追加の13ポイントが必要です。

First set:  .............ABCDEFGHIJKLMNOPQRSTUVWXYZ.............
Second set: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ

その後、パターンを繰り返すことができます。

First set:  .............ABCDEFGHIJKLMNOPQRSTUVWXYZ..........................abcdefghijklmnopqrstuvwxyz
Second set: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz

これは私たちに以下を提供します。

tr .............A-Z..........................a-z A-ZA-Za-za-z

だから:

$ echo Uryc zr cyrnfr | tr .............A-Z..........................a-z A-ZA-Za-za-z
Help me please

個人的には、あなたの質問への最初のアプローチはより簡単だと思います!

最初の方法は、入力の他の文字も変換しません。たとえば、次を比較します。

$ echo Uryc zr cyrnfr. | tr .............A-Z..........................a-z A-ZA-Za-za-z  
Help me pleasem

そして

$ echo Uryc zr cyrnfr. | tr A-Za-z N-ZA-Mn-za-m
Help me please.

答え3

@Prvt_Yadvのおかげで、これらの点を理解することができます。最初の質問に対する答えは次のとおりです。

2番目のコマンドの後に隠された魔法は何ですかtr

この13点は、単に2番目のセットの最初の13文字にマップされます。だから

tr .............A-Z A-ZA-Z次のコレクションを作成します。

SET1 -> .............ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> ABCDEFGHIJKLMNOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZ

入力にポイントが含まれていない場合、これらの代替項目は使用されないため、初期シーケンスを削除できます。その後、これらのセットは次のようになります。

SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> NOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZ

ただし、最初のセットにはすでに26文字すべてが含まれており、2番目のセットには後続の文字が繰り返されているため、これらも破棄され、次のように終了します。

SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> NOPQRSTUVXWYZABCDEFGHIJKLM

これは最初のコマンドと同じrot13置換です(小文字はここでは処理されません)。質問のタイトルにも同じロジックを適用できます。

tr ...A-Z A-ZA-Z <<< “JVPQBOV”次のコレクションを作成します。

SET1 -> ...ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> ABCDEFGHIJKLMNOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZ

初期シーケンスに続く繰り返し文字を削除すると、次のようになります。

SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> DEFGHIJKLMNOPQRSTUVXWYZABC

これはrot3の代替品です。

今、2番目の質問は次のとおりです。

最初のコマンドと同様に、2番目のコマンドも小文字と大文字の両方で機能するようにするにはどうすればよいですか?

動作させるには、次のように最初に必要な数のポイントを配置し、腐敗と親とサブシーケンスの間の26ポイントを一致させます。

tr ........A-Z..........................a-z A-ZA-Za-za-z

これにより、鈍感なrot8が正常に作成されます。これがうまくいく理由を直感的に理解するために、次のコレクションを見てみましょう。

SET1 -> ........ABCDEFGHIJKLMNOPQRSTUVXWYZ..........................abcdefghijklmnopqrstuvxwyz
SET2 -> ABCDEFGHIJKLMNOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZabcdefghijklmnopqrstuvxwyzabcdefghijklmnopqrstuvxwyz

ドットマップと末尾の文字を除く:

SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZabcdefghijklmnopqrstuvxwyz
SET2 -> IJKLMNOPQRSTUVXWYZABCDEFGHijklmnopqrstuvxwyzabcdefgh

今大文字と小文字の両方で動作します:)

動作させるもう1つの方法は、tr次の2つのコマンドを使用することです。

tr .............A-Z A-ZA-Z <<< "ABJ V hqrefgnaq" | tr .............a-z a-za-z

@iruvarはドット代替の使用について警告しました。入力文字列に点が含まれている場合、このコマンドは期待どおりに機能しません。これは、ポイントが別の文字にマッピングされるのは、置換をすると最後にマッピングされtrた文字に入力ポイントが変更されるからである。しかし、実際にはドットに加えて他の文字を使用することができます。したがって、trコマンドでドットを使用できない場合は、次のように使用できます@。これはまた働きます:

tr @@@@@@@@@@@@@A-Z A-ZA-Z <<< "GUNAX LBH NYY..."

関連情報