本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「tr」コマンドです。
本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、テキストファイルの文字を置換するための「tr」コマンドです。
「tr」は、文字を置き換えるためのコマンドです。指定した文字を削除したり、文字が連続している場合には1つにまとめたりすることもできます。
標準入力と標準出力が使われるので、ファイルを処理したい場合は「cat」コマンドなどを使用するか、リダイレクトします。
trコマンドの主なオプションは次の通りです。
短いオプション | 長いオプション | 意味 |
---|---|---|
-d | --delete | [文字セット1]に含まれる文字があったら削除する |
-s | --squeeze-repeats | [文字セット1]に含まれる文字が連続していたら1つにまとめる |
-t | --truncate-set1 | [文字セット1]を[文字セット2]の長さに切り詰めてから処理を行う |
-c | --complement | [文字セット1]に含まれない文字全て(の補集合)を対象とする |
「tr 012 abc」を実行すると「0」を「a」に、「1」を「b」に、「2」を「c」に置き換えます。「012」という連続した文字列を「abc」に置き換えるのではなく、常に1文字対1文字での置き換えとなるので、両者の長さはそろえる必要があります。
また、文字を範囲で指定することも可能です。「tr A-Z a-z」で「A」は「a」に、「B」は「b」に……と対応する文字に置き換えられます。
cat ファイル1 | tr A-Z a-z > ファイル2
tr A-Z a-z <ファイル1 >ファイル2
(「ファイル1」の大文字を全て小文字に変換して「ファイル2」に保存する)(画面1)
「-d」オプションで、指定した文字を削除することができます。例えば、Windows環境で作成したテキストファイルの改行コードを、Linux環境向けに置き換えるといった用途に使用できます。
Windows環境では、改行を「CR」(16進数0D)と「LF」(16進数0A)の2バイトで表しますが、Linux環境では「LF」のみです。trコマンドでは「CR」を「\r」で表すことができるので、「tr -d \r」としてテキストファイルから「CR」を除去することで、Linux環境用の改行コードに変換できます。
※trコマンドには文字を追加する機能はないので、「LF」を「CRLF」に置き換えたい場合には「sed」コマンドなどを使用します。なお、Windows環境の「メモ帳」(テキストエディタ)を含め多くのエディタソフトウェアは、改行コードが違っていても処理することができます。
tr -d "\r" <ファイル1 >ファイル2
(「ファイル1」から「CR」を削除して「ファイル2」に保存する)(画面2)
「-s」オプションでは、指定した文字が連続している場合には1つにまとめることができます。例えば、「tr -s "\r"」では、連続した改行を1つにします。catコマンドの「-s」オプションと同じ働きになります。
tr -s "\r" <ファイル1 >ファイル2
(「ファイル1」の連続した改行を1つにして「ファイル2」に保存する)
cat ファイル1 | tr -s "\r"
(ファイル1の連続した改行を1つにして表示する)(画面3)
PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.