Linux で `tr` を使って文字を置換する方法

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このチュートリアルでは、Linux の tr (translate) コマンドを使用して、テキストファイル内またはコマンド出力の文字を置換、削除、または変換するプロセスを案内します。tr コマンドは、さまざまなテキスト変換を実行できる汎用ツールであり、Linux ツールボックスの中でも非常に便利なツールです。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/TextProcessingGroup -.-> linux/tr("Character Translating") subgraph Lab Skills linux/tr -.-> lab-415206{{"Linux で `tr` を使って文字を置換する方法"}} end

tr コマンドの理解

tr コマンドは "translate" の略で、与えられた入力内の文字を置換、削除、または圧縮することができる強力な Linux ユーティリティです。これはさまざまなテキスト操作タスクに使用できる汎用ツールであり、Linux ユーザーのツールキットに欠かせない存在です。

tr コマンドとは?

tr コマンドは、標準入力(通常はファイルまたは他のコマンドの出力)から文字を変換または削除し、結果を標準出力に書き出すために使用される標準的な Unix/Linux ユーティリティです。以下のようなさまざまな文字変換を実行するために使用できます。

  • 1 つまたは複数の文字を他の文字に置換する
  • 特定の文字を削除する
  • 繰り返される文字を 1 つに圧縮する

tr コマンドの基本的な構文は次のとおりです。

tr [OPTION] SET1 [SET2]

ここで、SET1SET2 は変換または削除する文字の集合です。OPTION パラメータは、--deleteSET1 の文字を削除したり、--squeeze-repeats で繰り返される文字を圧縮したりするなど、追加の動作を指定するために使用できます。

tr での文字集合の理解

tr コマンドは文字集合を操作します。文字集合はさまざまな方法で定義されます。

  • 単一の文字ab、または 1 などの個々の文字を指定できます。
  • 文字範囲:ハイフン (-) 演算子を使用して、a-z0-9 などの文字範囲を指定できます。
  • 文字クラス[:upper:] で大文字、[:lower:] で小文字、[:digit:] で数字など、事前定義された文字クラスを使用できます。

これらの文字集合は、それぞれ入力文字と出力文字を定義するために SET1SET2 の両方で使用できます。

実用例

tr コマンドのいくつかの実用例を見てみましょう。

  1. 小文字を大文字に置換する

    echo "hello, world!" | tr "[:lower:]" "[:upper:]"

    出力: HELLO, WORLD!

  2. 特定の文字を削除する

    echo "abc123def" | tr -d "1-3"

    出力: abcdef

  3. 繰り返される文字を圧縮する

    echo "hello   world" | tr -s " "

    出力: hello world

これらの例は、tr コマンドの汎用性と、さまざまなテキスト操作タスクにどのように使用できるかを示しています。次のセクションでは、tr コマンドのより高度な使用例と実用的なアプリケーションについて詳しく見ていきます。

tr を使った文字の置換

tr コマンドの主な用途は、与えられた入力内の文字を置換することです。これは、データクリーニング、形式変換、文字エンコーディング変換など、さまざまなテキスト操作タスクに役立ちます。

文字を置換するための構文

tr コマンドを使って文字を置換する基本的な構文は次のとおりです。

tr 'SET1' 'SET2'

ここで、SET1 は置換したい文字を表し、SET2 は置換に使用したい文字を表します。tr コマンドは、SET1 内の各文字を SET2 内の対応する文字に置換します。

たとえば、すべての小文字を大文字に置換するには、次のコマンドを使用できます。

echo "hello, world!" | tr "[:lower:]" "[:upper:]"

出力:

HELLO, WORLD!

この例では、[:lower:] はすべての小文字の集合を表し、[:upper:] はすべての大文字の集合を表します。tr コマンドは、各小文字をそれに対応する大文字に置換します。

文字範囲の扱い

文字範囲を使用して、文字の集合を置換することもできます。たとえば、すべての数字を対応する大文字に置換するには、次のコマンドを使用できます。

echo "abc123def" | tr "0-9" "A-J"

出力:

abcABCdef

この場合、0-9 は数字の範囲を表し、A-J は A から J までの大文字の範囲を表します。tr コマンドは、各数字を対応する大文字に置換します。

実用例

tr コマンドを使って文字を置換するさらなる実用例をいくつか紹介します。

  1. スペースをアンダースコアに置換する

    echo "hello world" | tr " " "_"

    出力: hello_world

  2. 複数の文字を一度に置換する

    echo "abc123def" | tr "a-c 3" "x-z 9"

    出力: xyz129def

  3. 文字エンコーディングを変換する

    echo "résumé" | tr "é" "e"

    出力: resume

これらの例は、tr コマンドが文字置換タスクを実行する際の柔軟性を示しています。構文とさまざまな文字集合オプションを理解することで、tr コマンドを特定のテキスト操作ニーズに合わせることができます。

tr の実用的なアプリケーション

tr コマンドは、幅広い実用的なシナリオで使用できる汎用ツールです。以下は tr コマンドの一般的なアプリケーションのいくつかです。

データクリーニングと変換

tr コマンドの最も一般的な使用例の 1 つは、データクリーニングと変換です。たとえば、tr を使用して以下のことができます。

  • ファイルまたはテキスト入力から不要な文字を削除する
  • テキストを大文字または小文字に変換する
  • 特殊文字や句読点を置換してテキストを正規化する
## ファイルから英数字以外の文字を削除する
cat file.txt | tr -cd '[:alnum:]'

## ファイルを大文字に変換する
cat file.txt | tr '[:lower:]' '[:upper:]'

## CSV ファイル内のコンマをセミコロンに置換する
cat file.csv | tr ',' ';'

テキスト操作と整形

tr コマンドは、以下のようなさまざまなテキスト操作と整形タスクにも使用できます。

  • 先頭/末尾のスペースを削除する
  • 複数のスペースを 1 つのスペースに圧縮する
  • 特定の文字や単語を置換する
## 先頭と末尾のスペースを削除する
echo "   hello, world!   " | tr -d '[:space:]'

## 複数のスペースを 1 つのスペースに圧縮する
echo "hello   world" | tr -s ' '

## "foo" のすべての出現を "bar" に置換する
echo "foo is foo" | tr "foo" "bar"

エンコーディング変換

tr コマンドは、以下のような文字エンコーディング変換を行うのに役立ちます。

  • 異なる文字エンコーディング間で変換する(例: ASCII から UTF-8)
  • 特定のアクセント付き文字を削除または置換する
## 文字列からアクセントを削除する
echo "résumé" | tr "é" "e"

## ファイルを ISO-8859-1 から UTF-8 に変換する
iconv -f ISO-8859-1 -t UTF-8 file.txt | tr -d '\r'

これらは tr コマンドの実用的なアプリケーションのほんの一例です。その機能を理解し、他の Linux ユーティリティと組み合わせることで、幅広いニーズに対応する強力なテキスト処理ワークフローを作成することができます。

まとめ

このチュートリアルでは、Linux の tr コマンドを使用して、テキストファイルやコマンド出力内の文字を置換、削除、または変換する方法を学びました。さまざまな例と使用例を調べ、このコマンドラインツールの強力さと柔軟性を実証しました。tr コマンドを習得することで、テキスト処理タスクを合理化し、Linux 環境での全体的な生産性を向上させることができます。