tr は、繰り返される文字を変換、削除、または圧縮するための UNIX ユーティリティです。 STDIN から読み取り、STDOUT に書き込みます。
tr は翻訳の略です。
構文
tr コマンドの構文は次のとおりです:
$ tr [OPTION] SET1 [SET2]
翻訳
SET1 と SET2 の両方が指定され、'-d' OPTION が指定されていない場合、tr コマンドは SET1 の各文字を SET2 の同じ位置にある各文字に置き換えます。
1.小文字を大文字に変換
次の tr コマンドは、小文字を大文字に変換するために使用されます
$ tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ thegeekstuff THEGEEKSTUFF
次のコマンドも小文字を大文字に変換します
$ tr [:lower:] [:upper:] thegeekstuff THEGEEKSTUFF
tr で範囲を使用することもできます。次のコマンドは、範囲を使用して小文字を大文字に変換します。
$ tr a-z A-Z thegeekstuff THEGEEKSTUFF
2.中括弧を括弧に変換
ファイルとの間で翻訳することもできます。この例では、ファイル内の中括弧を括弧付きで翻訳します。
$ tr '{}' '()' < inputfile > outputfile
上記のコマンドは、「inputfile」から各文字を読み取り、中括弧の場合は変換し、出力を「outputfile」に書き込みます。
3.空白をタブに変換
次のコマンドは、すべての空白をタブに変換します
$ echo "This is for testing" | tr [:space:] '\t' This is for testing
4. -s を使用して文字の繰り返しを圧縮します
例 3 では、タブを使用してスペースを変換する方法を示しています。しかし、さらに 2 つのスペースが連続して存在する場合、前のコマンドは次のように各スペースをタブに変換します。
$ echo "This is for testing" | tr [:space:] '\t' This is for testing
-s オプションを使用して、文字の繰り返しを絞り込むことができます。
$ echo "This is for testing" | tr -s [:space:] '\t' This is for testing
同様に、複数の連続したスペースを単一のスペースで変換できます
$ echo "This is for testing" | tr -s [:space:] ' ' This is for testing
5. -dオプションで指定文字を削除
tr は、-d オプションを使用して特定の文字を削除するためにも使用できます。
$ echo "the geek stuff" | tr -d 't' he geek suff
文字列からすべての数字を削除するには、
$ echo "my username is 432234" | tr -d [:digit:] my username is
また、ファイルから行を削除したい場合は、sed d コマンドを使用できます。
6. -c オプションを使用してセットを補完
-c オプションを使用して SET1 を補完できます。たとえば、数字以外のすべての文字を削除するには、次を使用できます。
$ echo "my username is 432234" | tr -cd [:digit:] 432234
7.ファイルから印刷できない文字をすべて削除
次のコマンドを使用して、ファイルから印刷できないすべての文字を削除できます。
$ tr -cd [:print:] < file.txt
8.ファイル内のすべての行を 1 行に結合
以下のコマンドは、すべての改行をスペースに変換し、結果を 1 行にします。
$ tr -s '\n' ' ' < file.txt