Linuxコマンド一覧

trコマンド|文字を置き換える・消す

__ __ _ _____
\ \ / /__| |_|_ _|__ _ __ _ __ ___
\ \ /\ / / _ \ '_ \| |/ _ \ '__| '_ ` _ \
\ V V / __/ |_) | | __/ | | | | | |
\_/\_/ \___|_.__/|_|\___|_| |_| |_| |_
 
tr を試すためのサンドボックスです。実機のファイルには影響しません。
user@webterm:~/project$
 

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別のサイト

>_WEBTERM LEARN

WebTerm Learn|1つのコマンドから、使える状態へ

コマンドは単体で覚えるより、実際の作業の流れの中で使うほうが身につきます。順番に積み上げていくコースがあります。

コースを見る

関連するコマンド

sed / cut / sort / uniq

よくある質問

tr にファイル名を渡せますか?
渡せません。tr は標準入力だけを読むので、`tr 'a-z' 'A-Z' < file` のように `<` で流し込むか、`cat file | tr ...` とパイプでつなぎます。
sed との違いは何ですか?
tr は**1文字ずつ**の置き換え、sed は文字列(パターン)の置き換えです。`abc` を `xyz` に1対1で対応させるのが tr、`hello` を `hi` に替えるのが sed です。
-d と -s は何をしますか?
`-d` は指定した文字を消し、`-s` は連続した同じ文字を1つに潰します。空白の掃除には `-s ' '` がよく使われます。
`[:lower:]` のような書き方は何ですか?
文字クラスです。`a-z` と同じ意味ですが、記号を並べずに済むので読みやすくなります。`[:upper:]` `[:digit:]` `[:space:]` などがあります。
改行を指定するにはどう書きますか?
`'\n'` と書きます。タブは `'\t'` です。カンマ区切りを1行ずつに開くなら `tr ',' '\n'` になります。