概要
tr(translate)は、その名前の通り文字を「翻訳」したり「置換」したりする役割を果たします。例えば、小文字を大文字に変換したり、特定の文字を別の文字に置き換えたり、改行文字をスペースに変換したりするなど、文字単位の簡単な変換作業に特化しています。`sed`や`awk`が行単位の複雑なパターンマッチングをサポートするのに対し、`tr`は文字単位の処理が非常に高速で効率的です。
主な特徴
trコマンドの主な特徴は以下の通りです。
- 文字単位でテキストを変換または削除します。
- 標準入力(stdin)のみからデータを受け取ります。
- 正規表現(regular expression)を使用しません。
- パイプ(`|`)と組み合わせて、他のコマンドの出力結果を加工するためによく使用されます。
trの基本構文
trコマンドは基本的に2つの文字列(セット)を引数に取ります。
- `tr 'set1' 'set2'`: `set1`にある文字を`set2`にある文字に1対1で対応させて変換します。
- `tr -d 'set1'`: `set1`にあるすべての文字を削除します。
主なオプション
よく使用されるtrコマンドのオプションを用途別にグループ化しました。
1) 機能オプション
2) 特殊文字と集合
生成されたコマンド:
コマンドを組み合わせてみてください。
説明:
`tr` コマンドを実行します。
これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。
使用例
trコマンドの様々な使用例を通して機能を習得しましょう。
小文字を大文字に変換
echo 'hello world' | tr '[:lower:]' '[:upper:]'
標準入力から受け取った小文字を大文字に変換して出力します。
特定文字の削除
echo 'hello world' | tr -d ' '
テキストからすべての空白(` `)を削除します。
改行を空白に変換
cat file.txt | tr '\n' ' '
ファイル内容の改行(`\n`)文字を空白(` `)に変換して1行で出力します。
重複する空白の圧縮
echo 'hello world' | tr -s ' '
連続して繰り返される空白を1つの空白に圧縮します。`-s`オプションは、重複する文字列を圧縮する機能を実行します。
大文字を小文字に変換
echo 'HELLO WORLD' | tr 'A-Z' 'a-z'
標準入力から受け取った大文字を小文字に変換して出力します。
ヒントと注意事項
trコマンド使用時に留意すべき点をまとめました。
ヒント
- trはファイル名を直接引数として受け取りません。必ず`cat`や`echo`のようなコマンドを通じて標準入力でテキストを渡す必要があります。
- 文字列を引数として渡す際には、シェルが特殊文字を解釈しないようにシングルクォート(`'`)を使用することをお勧めします。
- `tr`は`sed`や`awk`に比べて機能は単純ですが、文字単位の変換作業においてははるかに高速であるという利点があります。