目次
tr コマンドとは?
tr コマンドは、「translate(変換)」の略で、文字列の変換や削除を行うためのツールです。
標準入力(stdin)からデータを受け取り、指定した操作を行った結果を標準出力(stdout)に送ります。
以下のような用途で使われます。
- 文字や文字列の置換
- 特定の文字の削除
- 重複する文字の圧縮
- 大文字と小文字の変換
シンプルですが強力なツールで、スクリプトやデータ加工で頻繁に使用されます。
コマンド構文
tr [オプション] セット1 [セット2]
- セット1: 変換元の文字や文字列を指定します。
- セット2: 変換先の文字や文字列を指定します(省略した場合は削除操作など)。
主なオプション一覧
| オプション | 説明 |
|---|---|
| -c | 指定した文字セットの補集合を使用 |
| -d | 指定した文字セットを削除 |
| -s | 指定した文字を圧縮して1文字にまとめる |
| -t | セット2がセット1より短い場合に、セット2を繰り返して使用(非推奨) |
使用例と出力結果
1. 文字の変換
大文字を小文字に変換:
echo "HELLO WORLD" | tr 'A-Z' 'a-z'
出力:
hello world
解説:
A-Z は大文字の範囲、a-z は小文字の範囲を指定しています。入力内の文字が1対1で対応して変換されます。
2. 特定の文字の削除
スペースを削除:
echo "a b c d e" | tr -d ' '
出力:
abcde
解説:
-d オプションを指定することで、セット1に含まれる文字(ここではスペース)を削除します。
3. 文字の圧縮
連続するスペースを1つに圧縮:
echo "a b c d" | tr -s ' '
出力:
a b c d
解説:-s オプションを指定することで、連続するスペースを1つにまとめます。データ整形に役立つ操作です。
4. 特定文字の補集合を使用
アルファベット以外の文字を削除:
echo "hello1234!@#world" | tr -cd 'a-zA-Z'
出力:
helloworld
解説:
-c オプションは補集合を使用します。ここではアルファベット以外の文字が削除されました。
応用例
1. ファイル内の大文字を小文字に変換
cat sample.txt | tr 'A-Z' 'a-z'
解説:
trはファイルの直接処理には対応していないため、catなどと組み合わせて使用します。
2. 区切り文字を変換
CSVファイルの区切り文字をタブに変更:
cat data.csv | tr ',' '\t'
3. パスワード生成(ランダム文字列生成)
cat /dev/urandom | tr -cd 'a-zA-Z0-9' | head -c 12
解説:
/dev/urandomで生成された乱数から英数字以外を削除し、12文字分を抽出します。
注意点
trコマンドは、標準入力と標準出力のみを扱うため、元のファイルを直接操作することはできません。
ファイルを変更したい場合は、リダイレクトを使って結果を保存します。
cat input.txt | tr 'A-Z' 'a-z' > output.txt
セット1やセット2で指定する範囲は、エスケープシーケンス(例: \n)には対応していません。
