(13)【tr】シェルスクリプトコマンド活用紹介

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/

書籍の紹介

(14)【df】シェルスクリプトコマンド活用紹介

(14)【df】シェルスクリプトコマンド活用紹介

(12)【nkf】シェルスクリプトコマンド活用紹介

(12)【nkf】シェルスクリプトコマンド活用紹介