はじめに
こんにちは!今回はtrコマンドについて解説します。
trはテキスト内の文字を変換したり削除したりするコマンドです。大文字を小文字に変換したり、特定の文字を別の文字に置き換えたり、超便利なコマンドですね。
テキスト処理をする時にめっちゃ活躍するので、これを機にマスターしちゃいましょう!
trコマンドとは
trは、標準入力からテキストを受け取って、指定された文字を変換・削除して標準出力に出力する外部コマンドです。“translate"の略ですね。
パイプで他のコマンドと組み合わせて使用することが多く、テキスト処理の強い味方です。正規表現には対応していませんが、シンプルな文字変換であればtrの方が高速です。
基本構文
|
|
変換元は置き換えたい文字、変換先は置き換え後の文字です。
主なオプション
| オプション | 説明 |
|---|---|
-d |
文字を削除(変換先を指定しない) |
-s |
連続する同じ文字を1つにまとめる |
-c |
変換元の補集合を使用(指定した文字以外を対象) |
-C |
-cと同じ(互換性オプション) |
-t |
-dと-sが同時に指定された時に変換先をスキップ |
使用例
例1: 小文字を大文字に変換
|
|
実行結果:
|
|
a-zは小文字全体、A-Zは大文字全体を表します。最も基本的な使い方です。
例2: 大文字を小文字に変換
|
|
実行結果:
|
|
大文字から小文字への変換も同じやり方です。
例3: 特定の文字を別の文字に置き換え
|
|
実行結果:
|
|
o(オー)を0(ゼロ)に置き換えます。
例4: 複数の文字を置き換え
|
|
実行結果:
|
|
複数の文字を同時に置き換えることができます。
例5: 特定の文字を削除
|
|
実行結果:
|
|
-dオプションで指定した文字を削除します。
例6: すべての数字を削除
|
|
実行結果:
|
|
数字の範囲0-9を指定して削除できます。
例7: 連続する空白を1つの空白に
|
|
実行結果:
|
|
-sオプションで連続する同じ文字を1つにまとめます。
例8: 改行を空白に変換
|
|
実行結果:
|
|
改行を別の文字に変換することもできます。
例9: 補集合で処理(指定文字以外を削除)
|
|
実行結果:
|
|
-cオプションで補集合を使用。文字以外(数字など)を削除します。
例10: タブを空白に変換
|
|
実行結果:
|
|
タブを別の文字に変換する時に便利です。
Tips・注意点
エスケープ文字の指定方法
バックスラッシュを使ってエスケープシーケンスを指定できます。
|
|
文字範囲の指定
-(ハイフン)で文字範囲を指定できます。
|
|
セット長が異なる場合
変換先が短い場合は、最後の文字が繰り返されます。
|
|
sed や grep との違い
trは単純な文字置換・削除に特化していて、sedより高速です。ただし正規表現には対応していません。
|
|
実践的な使い方
ファイル名の正規化
|
|
ファイル名のスペースやハイフンをアンダースコアに統一する時に便利です。
CSV データのクリーニング
|
|
Windows形式のCSVファイルの改行コード(CRLF)から不要なCRを削除します。
ログファイルの大文字小文字を統一
|
|
ログファイルのエラーメッセージを小文字に統一して検索しやすくします。
IP アドレスの形式変換
|
|
ハイフン区切りをドット区切りに変換する例です。
まとめ
trコマンドのポイント:
- テキスト内の文字を変換・削除する基本コマンド
- 小文字⇆大文字の変換:
tr a-z A-Z、tr A-Z a-z -dオプション: 文字を削除する-sオプション: 連続する同じ文字を1つにまとめる-cオプション: 指定した文字以外を対象にする- よく使う組み合わせ:
tr a-z A-Z、tr -d 0-9、tr -s ' '
シンプルなテキスト処理ならtrを使うのが一番効率的ですよ!