UNIX/Linuxの部屋 trコマンドの使い方

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド tr 文字の置換を行う このエントリーをはてなブックマークに追加

最終更新


tr コマンドは、文字の置換や削除を行うコマンドである。UNIX・Linux いずれも利用可能なコマンドである。

目次:
  • tr コマンドのオプション


ファイル sample.txt 内の文字 "a" を "b" に置換するには、下記のようにする。
% tr a b < sample.txt
また "a" を "d" に、"b" を "e" に、"c" を "f" に置換して表示する。"abc" を "def" に置換するのではないことに注意。
% tr abc def < sample.txt

以下のように a-z などと範囲指定することもできる。
% tr 'a-z' 'A-Z' < file
⇒ 小文字を大文字に変える
% tr 'A-Za-z' 'a-zA-Z' < file
⇒ 小文字を大文字に、大文字を小文字に変換する
% tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ < file
⇒ 小文字を大文字に変換する。このように範囲指定せず、全文字を羅列してもよい。

`\ddd' という形式は、8進数のキャラクタコードを表す。例えば Mac のファイルは改行コードが 0x0D (8進で 015) だが、これを UNIX の改行コード 0x0A (8進で 012) に変換するには、
% tr '\015' '\012' < sample.mac > sample.unix
とすればよい。`\' がシェルに解釈されないように '' で囲むか、重ねて \\ と書くこと。
% tr '\015' '\012' (OK)
% tr \\015' \\012 (OK)
% tr \015 \012 (ダメ)
なお、\r・\n・\t・\b などのコントロールコードを記述することもできる。

tr コマンドのオプション
-d または --delete オプションを付けると、文字を削除することができる。
Windows・DOS の改行コード 0x0D 0x0A を 0x0A に変換するには、
% tr -d '\r' < sample.dos > sample.unix
と書くことができる (改行コード以外の場所に 0x0D が現われない場合)。なお、これは
% tr -d '\015' < sample.dos > sample.unix
と等価である。

-c は、「〜以外」を表す。
例えば
% tr -dc 0-9 < /dev/urandom | fold -w 20 | head -1
は、/dev/urandom から 0-9 以外を削除 (=0-9 のみ残す) する。この行全体では20個のランダムな数字を表示する。

-s または --squeeze-repeats オプションを付けると、連続する文字を 1つの文字にまとめる。
% tr -s ' ' < file
→ 連続する空白をひとつにまとめる
% tr -s '\n' < file
→ 連続する改行をひとつにまとめる (=空行削除の効果がある)

1文字でなく、文字列の置換を行いたいなら、sed や perl を使うこと。また、perl だと強力な正規表現が使えるので、tr でできることでも、全て perl でやってしまうのもよいかもしれない。
>> Solaris10オンラインマニュアル(man) Solaris10 tr(1)
>> FreeBSDオンラインマニュアル(man) FreeBSD tr(1)
>> Linuxオンラインマニュアル(man) Linux tr(1)