目次
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
)には対応していません。