tr は文字単位で置き換え・削除を行うコマンドです。大文字にする書き方、区切り文字を改行に変える使い方、余分な空白を潰す `-s` を、ブラウザ上のターミナルで打ちながら確認できます。
最終更新: 2026-09-06
tr 変換前 変換後 < ファイル
tr -d 消す文字 < ファイル
文字単位で置き換えたり消したりします。
ファイル名は受け取らないので、< かパイプで流し込みます。
小文字を大文字にします。
$ cat names.txt
Ada Lovelace
Linus Torvalds
Grace Hopper
$ tr 'a-z' 'A-Z' < names.txt
ADA LOVELACE
LINUS TORVALDS
GRACE HOPPER
a-z の各文字が A-Z の同じ位置の文字に置き換わります。
パイプでも同じです。
$ cat names.txt | tr 'a-z' 'A-Z'
ADA LOVELACE
LINUS TORVALDS
GRACE HOPPER
文字クラスを使うと、範囲を書かずに済みます。
$ tr '[:lower:]' '[:upper:]' < names.txt
ADA LOVELACE
LINUS TORVALDS
GRACE HOPPER
1行に詰まった値を、1行ずつに開くときによく使います。
$ cat tags.txt
web,infra,db,web
$ tr ',' '\n' < tags.txt
web
infra
db
web
行に開いてしまえば、あとは数えるだけです。
$ tr ',' '\n' < tags.txt | sort | uniq -c
1 db
1 infra
2 web
-d は指定した文字を消します。
$ tr -d ' ' < names.txt
AdaLovelace
LinusTorvalds
GraceHopper
-s は連続した同じ文字を1つに潰します。
桁をそろえるために空白が並んだログを、扱いやすい形に直せます。
$ cat messy.txt
log entry one
log entry two
$ tr -s ' ' < messy.txt
log entry one
log entry two
こうしておくと、cut -d' ' で列を取り出せるようになります。
tr は、次のコマンドが扱える形に整えるときに打つコマンドです。
| 場面 | 打ち方 |
|---|---|
| 大文字にそろえる | tr '[:lower:]' '[:upper:]' < names.txt |
| カンマ区切りを1行ずつにする | tr ',' '\n' < tags.txt |
| 余分な空白を1つに潰す | tr -s ' ' < messy.txt |
| 改行を消して1行にする | tr -d '\n' < list.txt |
| 空白をアンダースコアにする | tr ' ' '_' |
ファイル名は渡せません。
$ tr 'a-z' 'A-Z' names.txt
tr: extra operand ‘names.txt’
< かパイプで入力を渡してください。
これは tr が標準入力しか読まないコマンドだからです。
置き換えは1文字ずつの対応です。
tr 'abc' 'xyz' は、a を x、b を y、c を z に替えます。
「abc という並びを xyz に替える」ではありません。
文字列として置き換えたいときは sed を使います。
変換前と変換後の長さが違うと、最後の文字が繰り返されます。
$ echo hello | tr 'a-z' 'X'
XXXXX
a-z の26文字すべてが X に対応させられました。
意図しない結果になりやすいので、対応する長さで書くのが安全です。
webterm.appこのサイト
ターミナル基礎
よく使うコマンドを学ぶ
learn.webterm.app別のサイト
