文字の大文字と小文字(小文字から大文字、またはその逆)を同時に変更するにはどうすればよいですか?

文字の大文字と小文字(小文字から大文字、またはその逆)を同時に変更するにはどうすればよいですか?

入力

   > a='Vikas'
   > echo $a
    Vikas

私の求める出力は

echo $a | <some command>

vIKAS

答え1

$ echo Vikas | LC_ALL=C tr a-zA-Z A-Za-z
vIKAS

このユーティリティはtr文字を変換します。文字セットを表す 2 つの引数を受け取り、標準入力を標準出力にコピーして、最初のセットで見つかった各文字を 2 番目のセットの対応する文字に置き換えます。このアプリケーションでは、小文字を大文字に、大文字を小文字に置き換えます。tr(1) のマニュアルページ詳細およびtr実行できるその他の処理については、こちらをご覧ください。

答え2

次のように、[:upper:] および [:lower:] オプションを指定して tr コマンドを使用できます。

echo "aBcDeF" |tr '[:upper:][:lower:]' '[:lower:][:upper:]'
AbCdEf

また、次のように sed コマンド (「ストリーム エディター」の略) を使用することもできます。

echo "abcd ABCD" |sed 'y/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/'

sed はより柔軟性が高く、任意の文字マッピングを定義できます。たとえば、次のコマンドを使用して数字をハッカー文字に変換できます。

echo "52065218802365" |sed 'y/0123456789/OIZEhSGLBP/'
SZOGSZIBBOZEGS

(文字マッピング参照)

関連情報