【Linux】trコマンドの使い方!小文字を大文字に変換する方法
この記事からわかること
- Linux:trコマンドとは?
- 小文字から大文字に変換する方法
- 特定の文字列を削除したり整形するには?
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
trコマンドとは
Linuxのtr
コマンドは標準入力から受け取った文字列を変換したり、削除したりと整形して出力できるコマンドです。標準入力とは通常、引数で渡せる文字列などのことをさしています。>(リダイレクト)
や|(パイプ)
を使えば標準入力をファイルの中身とすることも可能です。詳細は以下の記事を参考にしてください。
trコマンドでできること
- 特定の文字を削除する
- 特定の文字を変換(置換)する
- 小文字を大文字に変換する
- 大文字を小文字に変換する
- クラスを使えば簡単に指定可能
trコマンドのフォーマット
$ tr [オプション] [string1] [string2]
trコマンドのオプションやクラス
tr
コマンドの引数にはクラスを指定することも可能です。クラスを使えばあらかじめ定義された型の文字列を簡単に指定することができます。
オプション | 役割 |
---|---|
-d | string1と一致する文字列を削除 |
-s | string1と一致する文字列が 連続してある場合1文字にする |
クラス | 役割 |
[:alpha:] | アルファベット |
[:alnum:] | 英数字 |
[:lower:] | 小文字 |
[:upper:] | 大文字 |
[:dligit:] | 数字 |
[:space:] | スペース |
実践的な使い方
trコマンドは
ファイルの中身に対してよく使われます。引数でのファイル指定はできないので、< (リダイレクト)
や| (パイプ)
を使ってファイルを指定します。ファイルの中身を変更する訳ではなく、中身を参照したデータを整形して出力しているだけですので注意してください。
以下のような「sample.txt」があるとして動作させてみます。
$ cat sample.txt
abcdefg
123456
ABCDEFG
vvbbnnmm
任意の文字列を削除する
$ cat sample.txt | tr -d 'b'
acdefg
123456
ABCDEFG
vvnnmm
スペースを削除する
$ cat sample.txt | tr -d [:space:]
abcdefg123456ABCDEFGvvbbnnmm
連続した文字列を1文字にまとめる
$ cat sample.txt | tr -s 'b'
abcdefg
123456
ABCDEFG
vvbnnmm
小文字を大文字に変換する
$ cat sample.txt | tr [:lower:] [:upper:]
ABCDEFG
123456
ABCDEFG
VVBBNNMM
大文字を小文字に変換する
$ cat sample.txt | tr [:upper:] [:lower:]
abcdefg
123456
abcdefg
vvbbnnmm
大文字を小文字に変換する(クラス不使用)
$ cat sample.txt | tr 'A-Z' 'a-z'
abcdefg
123456
abcdefg
vvbbnnmm
trコマンド実行結果を元ファイルへ追記
$ cat sample.txt | tr [:upper:] [:lower:] >> sample.txt
abcdefg
123456
ABCDEFG
vvbbnnmm
abcdefg
123456
abcdefg
vvbbnnmm
trコマンド実行結果を元ファイルへ上書き
$ cat sample.txt | tr [:upper:] [:lower:] > sample.txt
追記(>>
)はできましたがなぜか上書きは(>
)できませんでした。
< (リダイレクト)を使用してファイルを指定する
$ tr [:upper:] [:lower:] < sample.txt
abcdefg
123456
abcdefg
vvbbnnmm
zshではクラスは使えない?
私はMac OSでzshを使ってtrコマンド
でクラスを使用してみましたが以下のようなエラーが出てしまい実行できませんでした。
$ cat sample.txt | tr [:lower:] [:upper:]
zsh: no matches found: [:lower:]
起動シェルをbashに切り替えたところ実行できたのでtr
コマンドのクラスはzshに対応していないのかもしれません。
$ cat sample.txt | tr [:lower:] [:upper:]
zsh: no matches found: [:lower:]
// bashに切り替える
$ bash
The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
// bashで実行
$ cat sample.txt | tr [:lower:] [:upper:]
// 正常に動作
$ exit // bashを終了
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。