【bash使用例】正規表現な条件文&文字抽出【BASH_REMATCH】

雑学

シェルスクリプト関連の備忘録になります。

基本系

$ cat wrk.sh
#!/bin/bash

VAL="ABC123abcz"
if [[ $VAL =~ ABC(.*)abc(.) ]] ; then
    echo ${BASH_REMATCH[0]}
    echo ${BASH_REMATCH[1]}
    echo ${BASH_REMATCH[2]}
else
    echo "NOT MATCH"
fi

$ ./wrk.sh
ABC123abcz
123
z

検索ヒットした部分だけ抽出されます

検索ワードを少し短くしてみる。

$ cat wrk.sh
#!/bin/bash

VAL="ABC123abcz"
if [[ $VAL =~ BC(.*)abc(.) ]] ; then
    echo ${BASH_REMATCH[0]}
    echo ${BASH_REMATCH[1]}
    echo ${BASH_REMATCH[2]}
else
    echo "NOT MATCH"
fi

$ ./wrk.sh  
BC123abcz
123
z

関連リンク