trコマンドでLinuxのファイル内テキストを大文字・小文字変換する方法|使い方と応用例


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, ディレクトリ・ファイル操作 > trコマンドでLinuxのファイル内テキストを大文字・小文字変換する方法|使い方と応用例
ログファイルの文字をすべて小文字に統一したい、設定ファイルを大文字に変換したい----こういった文字変換処理に便利なのが tr(translate)コマンドです。

trコマンドは標準入力から受け取った文字を変換・削除・圧縮して標準出力に送るコマンドです。パイプやリダイレクトと組み合わせて使います。

【この記事でわかること】
・trコマンドで標準入力のテキストの文字変換・削除・圧縮ができる
・tr '[A-Z]' '[a-z]'で大文字を小文字に、tr '[a-z]' '[A-Z]'で小文字を大文字に変換できる
・tr -dで特定の文字を削除、tr -sで連続する同じ文字を1つに圧縮できる
・ファイルへの保存はリダイレクト(>)で別ファイルに出力する(元ファイルへの直接上書き不可)

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

基本的な使い方

trコマンドの書式

tr [オプション] 変換前の文字セット 変換後の文字セット

・変換前の各文字が、対応する変換後の文字に置き換えられる
・trは標準入力からデータを受け取るため、<(リダイレクト)や |(パイプ)と組み合わせる

大文字・小文字変換

1. 大文字を小文字に変換する

# テスト用ファイルを作成する [pakira@Tiger ~]$ echo "ABCDEFGHIJKLMNOPQRSTUVWXYZ" > test_file1.txt [pakira@Tiger ~]$ cat test_file1.txt ABCDEFGHIJKLMNOPQRSTUVWXYZ # 大文字を小文字に変換して表示する [pakira@Tiger ~]$ tr '[A-Z]' '[a-z]' < test_file1.txt abcdefghijklmnopqrstuvwxyz # 変換結果を別ファイルに保存する [pakira@Tiger ~]$ tr '[A-Z]' '[a-z]' < test_file1.txt > test_file2.txt [pakira@Tiger ~]$ cat test_file2.txt abcdefghijklmnopqrstuvwxyz

2. 小文字を大文字に変換する

[pakira@Tiger ~]$ cat test_file2.txt abcdefghijklmnopqrstuvwxyz [pakira@Tiger ~]$ tr '[a-z]' '[A-Z]' < test_file2.txt ABCDEFGHIJKLMNOPQRSTUVWXYZ # 結果を新しいファイルに保存する [pakira@Tiger ~]$ tr '[a-z]' '[A-Z]' < test_file2.txt > test_file3.txt [pakira@Tiger ~]$ cat test_file3.txt ABCDEFGHIJKLMNOPQRSTUVWXYZ

応用・よく使うtrコマンドのパターン

1. 特定の文字を削除する(-dオプション)

# ファイルから改行文字( )を削除して1行にまとめる $ cat multiline.txt | tr -d ' ' # 数字をすべて削除する $ echo "abc123def456" | tr -d '0-9' abcdef

2. 連続する同じ文字を1つに圧縮する(-sオプション)

# 連続するスペースを1つにまとめる $ echo "hello world" | tr -s ' ' hello world # 連続する改行を1つにまとめる $ cat file.txt | tr -s ' '

3. パイプと組み合わせる

# コマンドの出力を小文字に変換する $ echo "Hello World" | tr '[A-Z]' '[a-z]' hello world # /etc/hostsの内容を大文字に変換して確認する(確認用) $ cat /etc/hosts | tr '[a-z]' '[A-Z]'

注意事項

元ファイルへの直接上書きはできない

tr '変換前' '変換後' < file.txt > file.txt のように、入力と出力を同じファイルに指定することはできません。この書き方をすると、ファイルが空になってしまいます。

必ず別のファイル名に出力してから、必要であればリネームしてください。

# NG: 元ファイルが空になる(絶対にやらない) # tr '[A-Z]' '[a-z]' < file.txt > file.txt # OK: 別ファイルに出力してからリネームする $ tr '[A-Z]' '[a-z]' < file.txt > file_new.txt $ mv file_new.txt file.txt

本記事のまとめ

tr '[A-Z]' '[a-z]' < ファイル:大文字を小文字に変換
tr '[a-z]' '[A-Z]' < ファイル:小文字を大文字に変換
tr -d '削除文字' < ファイル:特定の文字を削除
tr -s '対象文字' < ファイル:連続する同じ文字を1つに圧縮
・変換結果は別ファイルに出力する(同じファイルへの入出力は不可)

Linuxのテキスト処理を体系的に学びたい方へ

trコマンドをはじめとするテキスト処理コマンド(sed・awk・grepなど)を組み合わせると、ログ解析や設定ファイルの一括変換を効率よく行えるようになります。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。


暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。