Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

Linuxのtrコマンド徹底解説!基本構文から実用的な使い方まで

LinuxやUnixシステムにおいて、trコマンドは文字の変換・削除・繰り返し文字の「圧縮(squeeze)」を行うためのコマンドラインユーティリティです。名前の由来は「translate(翻訳・変換)」にあります。このガイドでは、具体例を交えながらLinuxにおけるtrコマンドの使い方を詳しく解説します。繰り返し文字の除去、小文字から大文字への変換、基本的な文字の置換や削除など、さまざまな操作に活用でき、他のコマンドとパイプで組み合わせて使われることも多い便利なツールです。

Linuxは、私たちが日常的に使っている多くの技術の基盤となるカーネル/OSの中核です。スマートフォンに搭載されているAndroidもその一例です。オープンソースであり、柔軟にカスタマイズできる点が大きな特徴といえます。

trコマンドの基本的な使い方

trコマンドを実行する際の基本構文は以下の通りです。SET1内の文字がSET2内の対応する文字へと変換されます。

tr OPTION... SET1 [SET2]

trコマンドは2組の文字セット(通常は同じ長さ)を受け取り、1つ目のセットの文字を2つ目のセットの対応する文字で置き換えます。ここでのSETとは文字列を指し、バックスラッシュでエスケープされた特殊文字も含まれます。

実用例集

文字範囲を指定して変換する

文字クラスを使わずに、文字の範囲指定でも同様の操作が可能です。

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

逆方向(大文字→小文字)に変換したい場合は、単純にセットの順序を入れ替えるだけでOKです。

大文字・小文字を変換する

大文字を小文字へ、またはその逆へ変換することは、trコマンドの最も一般的な用途の一つです。

[:lower:]はすべての小文字に、[:upper:]はすべての大文字に一致します。

echo 'Hello' | tr '[:lower:]' '[:upper:]'
HELLO

空白行を削除する

空白行を削除するには、繰り返される改行文字を「圧縮(squeeze)」します。

tr -s '\n' < input.txt > output.txt

上記ではリダイレクト記号を使用しており、コマンドの出力結果がoutput.txtに書き込まれます。

数字以外の文字をすべて削除する

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

echo "The account number is 10879358" | tr -cd [:digit:]

[:digit:]はすべての数字を表します。-cオプションを併用することで、数字以外の文字が削除されます。出力結果は以下のようになります。

10879358

$PATHの各ディレクトリを改行して表示する

$PATH環境変数は、コマンド入力時にシェルが実行ファイルを探すディレクトリ一覧(コロン区切り)です。各ディレクトリを別々の行に表示するには、コロン(:)にマッチさせ、それを改行に置き換えます。

echo $PATH | tr ':' '\n'

/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin

各単語を改行して表示する

これを実現するには、英数字以外のすべての文字にマッチさせ、それらを改行に置き換えます。

echo 'Linux is the best operating system in the world' | tr -cs '[:alnum:]'

出力結果は以下の通りです。

Linux
is
the
best
operating
system
in
the
world

文字を置換する

標準入力の文字(例では「coding」)を、2つ目のセットの対応する文字に置き換えることもできます。

echo 'coding' | tr 'co' 'hi'

この場合、「c」はすべて「h」に、「o」はすべて「i」に置き換えられます。

hiding

文字セットは範囲指定でも定義できます。たとえば、次のように書く代わりに、

echo 'coding' | tr 'abcd' 'wxyz'

以下のように簡潔に記述できます。

echo 'coding' | tr 'a-d' 'w-z'
yozing

-cオプションで補集合を扱う

-cオプションを使用すると、SET1に含まれないすべての文字が置換対象となります。

次の例では、「li」以外のすべての文字が、2つ目のセットの最後の文字に置き換えられます。

$ echo 'coding' | tr -c 'cod' 'xy'
xoxxixyxy

また、改行なしで文字列を出力したい場合は、echoコマンドの-nオプションを使います。

-dオプションで文字を削除する

-dオプションを指定すると、SET1で指定した文字が削除されます。圧縮(squeeze)せずに削除だけを行いたい場合は、セットを1つだけ指定してください。

以下のコマンドは、「l」「i」「z」の文字を削除します。

echo 'Linuxize' | tr -d 'liz'

  1. Linuxで覚えておきたい10個のコマンド連結演算子と実用例

    Linuxにおける「コマンドの連結(チェーン)」とは、複数のコマンドを1行にまとめ、その間に挟んだ演算子の働きに応じて実行を制御するテクニックです。シェル上で小さなスクリプトを書くのに近い感覚で、ターミナルから直接手軽に実行できます。定型作業の自動化はもちろん、無人で稼働するサーバーをより体系的かつ安定して動作させるうえでも非常に有効です。あわせて読みたい: Awkと正規表現を使ってファイル内のテキストを抽出・フィルタリングする方法本記事では、日常的によく使われるコマンド連結演算子を10個厳選し、簡潔な説明と実際の実行例とともに解説します。これらを使いこなせるようになれば、短くて意味のあるコマ

  2. Linuxのwatchコマンドの使い方と実用例をわかりやすく解説

    Linuxのwatchコマンドは、指定したコマンドを一定間隔で繰り返し実行し、その結果を画面に表示し続けるためのツールです。コマンドの出力が時間とともにどう変化するかをリアルタイムで監視したい場合に非常に便利です。この記事では、watchコマンドの基本的な使い方と、覚えておくと役立つ実用的な例を紹介します。 watchコマンドの基本構文 watchコマンドの構文は以下のとおりです。 watch オプション コマンド 各要素の意味は次のとおりです。 オプション: 後述の表から選択したオプションを指定します。watchコマンドのデフォルト動作を変更できます。 コマンド: watchが繰り返し実行