utte

tr 文字を置き換える、または削除する

tr [オプション] 文字集合1 [文字集合2]

試してみる

主なオプション

-d指定した文字を削除する
-s連続する同じ文字を1つにまとめる
-c指定した文字以外を対象にする(補集合)
-t文字集合1を文字集合2の長さに切り詰めてから置き換える

解説

基本

tr は、標準入力から読んだ文字を1文字ずつ置き換えて、標準出力に書きます。ファイル名を引数で渡すことはできません。tr ... < ファイル か、パイプで入力します。

1文字ずつの対応

tr abc xyz は、a を x に、b を y に、c を z に置き換えます。文字列そのものの置き換え(foo を bar にする)はできません。それは sed の仕事です。

文字の範囲とクラス

a-z のような範囲のほか、[:upper:](大文字)、[:lower:](小文字)、[:digit:](数字)、[:space:](空白類)などの文字クラスが使えます。シェルに解釈されないよう、クォートで囲みます。

削除とまとめ

-d は文字を消し、-s は連続した同じ文字を1つにします。-s は空白の整理によく使います。-c は「指定した文字以外」の意味で、tr -cd '0-9' なら数字だけが残ります。

特殊な文字

改行は \n、タブは \t、CRは \r と書けます。Windows由来のファイルの \r を取り除くのによく使います。

このコマンドを使う問題

  1. trでWindows形式の改行をUnix形式に直す

関連するコマンド

LinuC 101の出題範囲