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

LinuxでのTrコマンドと例

tr は、LinuxおよびUnixシステムのコマンドラインユーティリティであり、標準入力から文字を変換、削除、および圧縮し、結果を標準出力に書き込みます。

tr コマンドは、繰り返される文字の削除、大文字から小文字への変換、基本的な文字の置換と削除などの操作を実行できます。通常、配管を介して他のコマンドと組み合わせて使用​​されます。

このチュートリアルでは、 trの使用方法を説明します。 最も一般的なオプションの実用的な例と詳細な説明を通してコマンドします。

trの使用方法 コマンド#

trの構文 コマンドは次のとおりです:

tr OPTION... SET1 [SET2]

tr 通常は同じ長さの2セットの文字を受け入れ、最初のセットの文字を2番目のセットの対応する文字に置き換えます。

SET 基本的には、特殊な円記号でエスケープされた文字を含む文字列です。

次の例では、 tr 最初のセットの文字を2番目のセットの一致する文字にマッピングすることにより、標準入力(linuxize)のすべての文字を置き換えます。

echo 'linuxize' | tr 'lin' 'red'

lが出現するたびに rに置き換えられます 、 i eを使用 、および n dを使用 :

reduxeze

文字セットは、文字範囲を使用して定義することもできます。たとえば、次のように書く代わりに:

echo 'linuxize' | tr 'lmno' 'wxyz'

使用できるもの:

echo 'linuxize' | tr 'l-n' 'w-z'

-cの場合 (-補完 )オプションが使用されます、 tr SET1にないすべての文字を置き換えます。

以下の例では、「li」を除くすべての文字が2番目のセットの最後の文字に置き換えられます。

echo 'linuxize' | tr -c 'li' 'xy'
liyyyiyyy

お気づきかもしれませんが、上記の出力には、入力よりも1つ多くの文字が表示されています。これは、 echo が原因です コマンドは、非表示の改行文字 \ nを出力します これもyに置き換えられます 。改行なしで文字列をエコーするには、 -nを使用します オプション。

-d -delete )オプションは trに指示します SET1で指定された文字を削除します。絞らずに文字を削除する場合は、1セットだけ指定してください。

以下のコマンドはlを削除します 、 i およびz 文字:

echo 'Linuxize' | tr -d 'liz'

L 入力に大文字のLが含まれているため、文字は削除されません l SETの文字は小文字です。

Lnuxe

-s -squeeze-repeats )オプションは、繰り返される一連の出現を最後のSETの文字セットに置き換えます。

次の例では、 tr 繰り返されるスペース文字を削除します:

echo "GNU     \    Linux" | tr -s ' '
GNU \ Linux

SET2を使用すると、SET1で指定された文字のシーケンスがSET2に置き換えられます。

echo "GNU     \    Linux" | tr -s ' ' '_'
GNU_\_Linux

-t -truncate-set1 )オプションは trを強制します さらに処理を行う前に、SET1をSET2の長さに切り捨てます。

デフォルトでは、SET1がSET2 trより大きい場合 SET2の最後の文字を再利用します。次に例を示します:

echo 'Linux ize' | tr 'abcde' '12'

出力は、文字 eを示しています SET1からのは、SET2の最新の文字である 2と一致します。 :

Linux iz2

ここで、 -tで同じコマンドを使用します オプション:

echo 'Linux ize' | tr -t 'abcde' '12'
Linux ize

SET1の最後の3文字が削除されていることがわかります。 SET1はSET2と同じ長さの「ab」になり、置き換えは行われません。

オプションの組み合わせ#

tr コマンドを使用すると、そのオプションを組み合わせることもできます。たとえば、次のコマンドは最初に iを除くすべての文字を置き換えます 0を使用 次に、繰り返される 0を絞ります 文字:

echo 'Linux ize' | tr -cs 'i' '0'
0i0i0

Trコマンドの例#

このセクションでは、 trの一般的な使用例をいくつか取り上げます。 コマンド。

小文字を大文字に変換#

小文字から大文字への変換、またはその逆の変換は、 trの一般的な使用例の1つです。 指図。 [:lower:] すべての小文字と[:upper:]に一致します すべての大文字に一致します。

echo 'Linuxize' | tr '[:lower:]' '[:upper:]'
LINUXIZE

文字クラスの代わりに、範囲を使用することもできます:

echo 'Linuxize' | tr 'a-z' 'A-Z'

大文字を小文字に変換するには、セットの場所を切り替えるだけです。

すべての非数字文字を削除します#

次のコマンドは、数字以外のすべての文字を削除します。

echo "my phone is 123-456-7890" | tr -cd [:digit:]

[:digit:] すべての数字を表し、 -cを使用します オプションの場合、コマンドは数字以外のすべての文字を削除します。出力は次のようになります:

1234567890

各単語を新しい行に入れます#

各単語を新しい行に入れるには、英数字以外のすべての文字を照合して、新しい行に置き換える必要があります。

echo 'GNU is an operating system' | tr -cs '[:alnum:]' '\n'
GNU
is
an
operating
system

空白行を削除します#

空白行を削除するには、繰り返し改行文字を絞るだけです。

tr -s '\n' < file.txt > new_file.txt

上記のコマンドでは、リダイレクト記号 <を使用しています file.txtのコンテンツを渡す trへ 指図。リダイレクト> コマンドの出力をnew_file.txtに書き込みます 。

印刷$PATH 別の行のディレクトリ#

$ PATH 環境変数は、コマンドを入力したときに実行可能ファイルを検索するディレクトリをシェルに指示する、コロンで区切られたディレクトリのリストです。

各ディレクトリを別々の行に出力するには、コロン()を一致させる必要があります )そしてそれを新しい行に置き換えます:

echo $PATH | tr  ':' '\n'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin

結論#

tr 文字を翻訳または削除するためのコマンドです。

非常に便利ですが、 tr 単一の文字でのみ機能します。より複雑なパターンマッチングと文字列操作については、 sedを使用する必要があります またはawk

ご質問やご意見がございましたら、お気軽にコメントをお寄せください。


Linux
  1. 例を含むLinuxTeeコマンド

  2. 例を含むLinuxヘッドコマンド

  3. LinuxでのJQコマンドと例

  1. 例を含むwcLinuxコマンド

  2. Linuxのソートコマンドと例

  3. Linuxでのエコーコマンド(例付き)

  1. Linuxでのmanコマンドと例

  2. LinuxでのAWKコマンドと例

  3. LinuxでのCurlコマンドと例