trコマンド
- 文字を置換する
- 大文字/小文字を変換する
- 改行を除去する
- 固定長のデータをタブ区切りに変換する/カンマ区切りに変換する
trコマンド概要
「tr」は、文字を置き換えるためのコマンドです。指定した文字を別の文字に置き換えたり、指定した文字を削除したり、文字が連続している場合には1つにまとめたりすることもできます。
ですが、sedでもっと細かく制御できるので、trは「改行を除去する」ためのコマンドに成り果ててしまいました。ここでは改行を除去することだけにフォーカスしてご説明します。
trコマンドの書式
tr [オプション] 文字セット1 [文字セット2]
trコマンドの主なオプション
オプション | 意味 |
---|---|
-d | ‘文字’を削除する |
trコマンド詳細説明
文字を置換する
sedを使いましょう。
$ tr 012 abc
- ヒント
- 012 という文字列を置き換えるのではなく、0をaに、1をbに、2をcに置き換えます。
大文字/小文字を変換する
sedを使いましょう。
大文字/小文字を変換する
$ tr ABC abc
- ヒント
- ABC という文字列を置き換えるのではなく、Aをaに、Bをbに、Cをcに置き換えます。
また、文字を範囲で指定することも可能です。「tr A-Z a-z」で「A」は「a」に、「B」は「b」に……と対応する文字に置き換えられます。
$ tr A-Z a-z
改行を除去する
「-d」オプションで、指定した文字を削除することができます。
ファイル中の改行を除去
$ cat sample.txt | tr -d '\n' > 出力ファイル名
文字列中の改行を除去
$ echo "$string_sample" | tr -d '\n'
- ヒント
- trコマンドの唯一の利点、sedより優れているただ一つの機能、それが tr -d ‘\n’ です。
- 重要
- tr -d ‘\n’ のくくりはシングルクォーテーションである必要があります。ダブルクォーテーションではいけません。理由は「文字列」ではなく「文字(一文字)」しか扱えないからです。
固定長のデータをタブ区切りに変換する/カンマ区切りに変換する
ls -la コマンドで普通に出力します。
$ ls -la
drwxr-xr-x 13 suzukiiichiro staff 416 7 14 13:31 ./
drwxrwxrwx+ 48 suzukiiichiro staff 1536 7 5 10:05 ../
drwxrwxrwx 7 suzukiiichiro staff 224 4 10 2020 AI_Algorithm_Game_Bash/
drwxrwxrwx 18 suzukiiichiro staff 576 4 10 2020 AI_Algorithm_Game_Chess/
drwxrwxrwx 39 suzukiiichiro staff 1248 4 10 2020 AI_Algorithm_Game_Othello/
drwxrwxrwx 31 suzukiiichiro staff 992 4 10 2020 AI_Algorithm_Game_RubiksCube/
drwxrwxrwx 33 suzukiiichiro staff 1056 4 10 2020 AI_Algorithm_Game_Shogi/
drwxrwxrwx 7 suzukiiichiro staff 224 4 10 2020 C_Othello/
連続した空白をタブに変換します。
$ ls -l | tr -s " " "\t"
total 528
drwxrwxrwx 7 suzukiiichiro staff 224 4 10 2020 AI_Algorithm_Game_Bash/
drwxrwxrwx 18 suzukiiichiro staff 576 4 10 2020 AI_Algorithm_Game_Chess/
drwxrwxrwx 39 suzukiiichiro staff 1248 4 10 2020 AI_Algorithm_Game_Othello/
drwxrwxrwx 31 suzukiiichiro staff 992 4 10 2020 AI_Algorithm_Game_RubiksCube/
drwxrwxrwx 33 suzukiiichiro staff 1056 4 10 2020 AI_Algorithm_Game_Shogi/
drwxrwxrwx 7 suzukiiichiro staff 224 4 10 2020 C_Othello/
連続した空白をカンマに変換します。
$ ls -l | tr -s " " ","
drwxrwxrwx,7,suzukiiichiro,staff,224,4,10,2020,AI_Algorithm_Game_Bash/
drwxrwxrwx,18,suzukiiichiro,staff,576,4,10,2020,AI_Algorithm_Game_Chess/
drwxrwxrwx,39,suzukiiichiro,staff,1248,4,10,2020,AI_Algorithm_Game_Othello/
drwxrwxrwx,31,suzukiiichiro,staff,992,4,10,2020,AI_Algorithm_Game_RubiksCube/
drwxrwxrwx,33,suzukiiichiro,staff,1056,4,10,2020,AI_Algorithm_Game_Shogi/
drwxrwxrwx,7,suzukiiichiro,staff,224,4,10,2020,C_Othello/