コマンドラインで大文字・小文字変換するには?

こんにちは、さるまりんです。

ターミナル、コマンドライン上で文字列を大文字から小文字に、小文字から大文字に変換することがあります。
特定のコマンドの戻りが小文字だけど大文字で欲しいとかの時です。

それをする方法を見ていきます。

trコマンドを使う

まずはtrコマンド、translateです。

小文字→大文字

echo "変換したい文字列" | tr '[:lower:]' '[:upper:]'

実行例です。

$ echo "salumarine's garage" | tr '[:lower:]' '[:upper:]'
SALUMARINE'S GARAGE
大文字→小文字

echo "変換したい文字列" | tr '[:upper:]' '[:lower:]'

実行例です。

$ echo "SALUMARINE'S GARAGE" | tr '[:upper:]' '[:lower:]'
salumarine's garage

awkコマンドを使う

awkは大文字小文字変換と同時に文字列の操作ができます。

小文字→大文字

echo "変換したい文字列" | awk '{print toupper($0)}'

実行例です。

$ echo "salumarine's garage" | awk '{print toupper($0)}'
SALUMARINE'S GARAGE
大文字→小文字

echo "変換したい文字列" | awk '{print tolower($0)}'

実行例です。

$ echo "SALUMARINE'S GARAGE" | awk '{print tolower($0)}'
salumarine's garage

sedコマンドを使う

こちらの例では部分的に文字列の一部を変換しています。

特定の単語を大文字に変換

echo "変換したい文字列" | sed 's/変換前/変換後/'

実行例です。

$ echo "salumarine's garage" | sed 's/garage/GARAGE/'
salumarine's GARAGE

garageGARAGEだけ変換されていますね。

bashの${var^^}や${var,,}を使う

bashの変数の中身を一括変換する方法です。

小文字→大文字

text="変換したい文字列"; echo "${text^^}"

実行例です。

$ text="salumarine's garage"; echo "${text^^}"
SALUMARINE'S GARAGE
大文字→小文字

text="変換したい文字列"; echo "${text,,}"

実行例です。

$ text="SALUMARINE'S GARAGE"; echo "${text,,}"
salumarine's garage

今回はAmazon Linux上で試していますが、基本的に同じコマンドは他のLinuxやUnix、macOSでも同様に使えます。(バージョンの違いで色々あるかもですが)

コマンドってパワフルです。

読んでくださってありがとうございました。
それではまた!