Linuxの真の力は、私たちの生活を楽にするために作成された多くのプログラム/ユーティリティがあることです。環境で多くのシェルスクリプトを作成する場合、この一連のプログラムが便利です。これらのプログラムを使用して、スクリプトの入力または出力を操作します。そのようなユーティリティの1つは、 tr
です。 、 translateの略です 。名前が示すように、trコマンドは、標準入力から文字を変換、スクイーズ、および削除し、LinuxおよびUnixライクなオペレーティングシステムで標準出力に書き込むために使用されます。
この記事では、実際の例を使用してtrコマンドの使用法を学習します。このガイドの最後で、trコマンドを快適に使用できるようになり、このコマンドを使用することがどのシナリオで有益であるかがわかります。
trコマンドの構文とヘルプ
trコマンドがサポートする構文と引数のリストを知るには、manページを参照するか、--help
を使用してください。 tr
のフラグ コマンド。
$ man tr
$ tr --help
tr
コマンドは、 SET1の形式で2つの引数を受け入れます およびSET2 ここで、 SET1 SET2の文字によって翻訳される入力文字になります 。特定のフラグがtrコマンドに渡されると、SET2がオプションで使用される場合があります。
tr [OPTION]… SET1 [SET2]
例1-trコマンドで変換
以下は、tr
の使用方法の簡単な例です。 指図。 tr
コマンドはecho
でパイプされます コマンドと小文字の"ost" 大文字に変換されます"OST" 。
ここでの変換は、2セットの文字の位置に基づいて行われます。 SET1の最初の文字は、SET2の最初の文字に置き換えられます( o-> O )、すべての文字について同様に( s-> S 、 t-> T 。
$ echo "ostechnix" | tr "ost" "OST"
OSTechnix
推奨される読み物:
- Linuxの例で説明されているBashEchoコマンド
例2-文字セットと特殊文字
tr
コマンドは、変換を非常に簡単にする文字セットの使用法を提供します。 tr
コマンドは、(\n
のような特殊文字を解釈することもできます 、\t
、\v
)さまざまな文字で翻訳できます。
文字セットの使用方法を見てみましょう。次の例では、文字列、整数、句読文字があります。句読文字はドット(.
)に置き換えられます )"[:punct:]"
を使用する 文字セット。
$ echo "Ubuntu 20.04 #$%^" | tr "[:punct:]" "."
例3-ケース変換
文字列を操作するときは、文字列の大文字と小文字を下から上に、またはその逆に変更することをお勧めします。 tr
を使用する コマンドを使用すると、さまざまな方法で大文字小文字の変換を行うことができます。
最初の方法では、 aと入力できます zへ セット1とセット2の両方で。
$ echo "ostechnix" | tr "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
OSTECHNIX
これは推奨される方法ではないことに注意してください。
すべての文字を入力する代わりに、範囲を使用することもできます(つまり、 a-z 、 A-Z 。
$ echo "ostechnix" | tr "a-z" "A-Z" # Lower to Upper case
OSTECHNIX
$ echo "OSTECHNIX" | tr "A-Z" "a-z" # Upper to Lower case
ostechnix
上記の2つのメソッドの代わりに文字クラスを使用することもできます。
$ echo "OSTECHNIX" | tr "[:upper:]" "[:lower:]"
ostechnix
$ echo "ostechnix" | tr "[:lower:]" "[:upper:]"
OSTECHNIX
例4-文字を削除する
tr
のオプションの引数のセットがあります さまざまなアクションの実行をサポートします。
そのようなフラグの1つは、「-d
」です。 または--delete
"これにより、SET1で指定された文字が削除されます。
以下は、各行に空白があり、3行目にタブ(2)がある3つのIPがある入力です。現在、-d
を使用しています 空白をきれいにできるフラグ。
192.168. 1. 12 192.168. 1. 13 192.168. 1. 14
以下のコマンドを実行すると、すべての空白が削除されます。ここで注意すべき重要な点は、タブは削除されず、空白のみが削除されることです。
$ tr -d " " < tr_test.txt
スペースとタブ(水平方向の空白)の両方を削除する場合は、"[:blank:]"
を使用できます。 文字セット。
$ tr -d "[:blank:]" < tr_test.txt
"[:space:]"
を使用することもできます 水平および垂直の空白を削除するための文字セット。
$ tr -d "[:space:]" < tr_test.txt
例5-スクイーズの繰り返し
フラグ「-s
または--squeeze-repeats
"を使用すると、SET1で指定された繰り返し文字は、1回出現する文字に置き換えられます。次の例では、(=
に等しい4を使用したことがわかります。 ) サイン。今-s
4を置き換えます(=
)with 1(=
。
$ echo "Production IP ==== 192.168.1.10" | tr -s "=" Production IP = 192.168.1.10
以下は、改行文字(\n
)の別の例です。 )圧迫されます。
$ cat tr_test.txt | tr -s "\n"
例6-補完
-c
の場合 フラグを使用すると、指定されたセットに対して逆変換が実行されます。次の例では、trはすべてのアルファベットを"*"
に変換します 通常は。ただし、-c
を使用すると、操作が逆になります。アルファベット以外のすべての文字は"*"
に置き換えられます 。
$ echo "Employee Number is 1267890" | tr -c "[:alpha:]" "*"
これを他のフラグと組み合わせて、特定の結果を得ることができます。たとえば、-d
と組み合わせる場合 フラグを立てると、逆削除操作が実行されます。
$ echo "Employee Number is 1267890" | tr -cd "[:digit:]"
注: 上記の例から、改行文字も変換/削除されていることがわかります。この方法を使用するときは、この点に注意して続行してください。
例7-出力のリダイレクト
これまでのすべてのセクションでは、ファイルから入力を読み取り、tr
を使用していくつかの処理を行いました。 コマンドを実行すると、出力が端末に送信されます。出力を端末ではなくファイルにリダイレクトする場合は、リダイレクト演算子を使用します。
$ tr -s "\n" < tr_test.txt > new_tr_test.txt
$ cat new_tr_test.txt
関連記事:
- 例を使用して説明されたBashリダイレクト
結論
この記事では、tr
の使用方法について説明しました。 指図。 Linuxでは、同じことを実現する方法は常に複数あります。この記事で示したものはすべて、sed
などの他のプログラムでも実現できます。 、awk
、など。ただし、これらのコマンドとさまざまな方法を知っていると、適切なコマンド/プログラムを使用するための適切な状況を判断するのに役立ちます。