Bashシェルスクリプトで文字列を右(左)からN文字取り出す

Bash,CentOS,Linux,Ubuntu

はじめに

シェルスクリプトで右からN文字、あるいは左からN文字切り取る方法。

多くの言語でStringクラスの right() メソッド、 left() メソッドとして提供されている機能になります。

検証環境

$ uname -moi
x86_64 x86_64 GNU/Linux

$ bash -version | head -n 1
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)

cut を使う方法

## 右から3文字切り取る
$ echo 0123456789 | cut -c -3
012

## 左から3文字切り取る
$ echo 0123456789 | rev | cut -c -3 | rev
789

左から切り取る場合は一度左右を反転させるのがポイントです。

変数展開を使う方法

捜査対象の変数が存在している場合は、変数の参照時に工夫して対処できます。

$ S=0123456789

## 右から3文字切り取る
$ echo "${S::3}"
012

## 左から3文字切り取る
$ echo "${S: -3}"
789

やはり左から切り取る場合には注意。 :- の間にスペースが必要です。

ひとこと

左から切り取る操作をいつも忘れて調べるのに時間を取られてしまうので、まとめました。

Bash,CentOS,Linux,Ubuntu