
trコマンド、使いこなせてる?文字変換・削除でテキスト処理を自由自在に!
trコマンドとは?文字列変換・削除の基本
trコマンドは、UNIX系のオペレーティングシステムで利用できる、文字列を変換、削除、圧縮するための強力なコマンドラインツールです。テキスト処理において、特定の文字を別の文字に置き換えたり、不要な文字を削除したりする際に非常に役立ちます。シェルスクリプトやデータ処理パイプラインで頻繁に使用されます。
trコマンドは、標準入力からテキストを受け取り、指定された変換または削除を行い、結果を標準出力に書き出します。これにより、他のコマンドと組み合わせて、複雑なテキスト処理タスクを実行できます。
基本的な構文は以下の通りです。
tr [オプション] 文字セット1 [文字セット2]
文字セット1には、変換または削除する文字を指定します。文字セット2には、文字セット1に対応する変換後の文字を指定します。文字セット2が省略された場合、文字セット1に指定された文字は削除されます。
trコマンドの基本的な使い方:変換
最も基本的な使い方は、文字の置換です。例えば、すべての小文字の’a’を大文字の’A’に置換するには、次のようにします。
echo "hello world" | tr 'a' 'A'
このコマンドは”hello world”という文字列をtrコマンドに渡し、’a’を’A’に置換します。出力は”hello world”となります。
複数の文字を同時に置換することも可能です。例えば、’abc’を’XYZ’に置換するには、次のようにします。
echo "abc def" | tr 'abc' 'XYZ'
このコマンドは、’a’を’X’、’b’を’Y’、’c’を’Z’に置換します。出力は”XYZ def”となります。
文字セットの長さが異なる場合、trコマンドは短い方のセットに合わせて動作します。長い方のセットの余りの文字は無視されます。
trコマンドの基本的な使い方:削除
trコマンドは、指定された文字を削除することもできます。-dオプションを使用します。
echo "hello world" | tr -d 'l'
このコマンドは、”hello world”からすべての’l’を削除します。出力は”heo word”となります。
複数の文字を同時に削除することも可能です。
echo "hello world" | tr -d 'lo'
このコマンドは、”hello world”からすべての’l’と’o’を削除します。出力は”he wrd”となります。
trコマンドの便利なオプション
trコマンドには、いくつかの便利なオプションがあります。
-sオプション: 連続する同じ文字を1つに圧縮します。
echo "aaabbbccc" | tr -s 'abc'
このコマンドは、連続する’a’、’b’、’c’をそれぞれ1つに圧縮します。出力は”abc”となります。
-cオプション: 文字セット1に指定されていない文字を対象とします。
echo "hello world" | tr -c 'l' '*'
このコマンドは、’l’以外のすべての文字を’*’に置換します。出力は”ll“となります。
文字クラス: trコマンドは、POSIX文字クラスをサポートしています。これを使用すると、特定の種類の文字を簡単に指定できます。例えば、[:lower:]はすべての小文字、[:upper:]はすべての大文字を表します。
echo "Hello World" | tr '[:upper:]' '[:lower:]'
このコマンドは、すべての大文字を小文字に変換します。出力は”hello world”となります。
よく使う文字クラスの例:
[:alnum:]: 英数字
[:alpha:]: アルファベット
[:digit:]: 数字
[:lower:]: 小文字
[:upper:]: 大文字
[:punct:]: 句読点
[:space:]: 空白文字
trコマンドの実践例
ファイル内の改行コードを削除する
Windows形式のテキストファイル(改行コードがCRLF)をUNIX形式(改行コードがLF)に変換する場合、CRを削除します。
tr -d '\r' < windows_file.txt > unix_file.txt
URLエンコード/デコード
trコマンドで完全にURLエンコード/デコードできるわけではありませんが、簡単な置換には利用できます。
echo "hello world" | tr ' ' '+'
この例では、スペースを’+’に置換しています。
大文字小文字変換
echo "Hello World" | tr '[:upper:]' '[:lower:]'
すべての文字を小文字に変換します。
特定の文字以外を削除
例えば、数字以外の文字を削除して、数字だけを取り出す。
echo "abc123def456" | tr -cd '[:digit:]\n'
ここでは、改行文字\n
も削除対象から除外しています。\n
がないと全ての文字が連結されて表示されてしまうためです。
参考リンク
まとめ
trコマンドは、シンプルながらも強力なテキスト処理ツールです。文字列の置換、削除、圧縮など、さまざまなタスクを効率的に実行できます。オプションや文字クラスを組み合わせることで、より複雑な処理も可能です。シェルスクリプトやデータ処理パイプラインで活用することで、作業効率を大幅に向上させることができます。ぜひ、trコマンドをマスターして、テキスト処理のスキルを向上させてください。