bashスクリプトで、文字列からテキストパターンを抽出する簡単な方法は何ですか?
たとえばX
、文字列の最後に2桁の数字を続けて抽出したいですか?
二重角かっこ=~
を使用する場合は、気の利いた正規表現演算子があります。キャプチャされたグループは、アレイで使用できるようになります。$BASH_REMATCH
if [[ $STRING =~ (X[0-9]{2})$ ]]; then
echo "matched part is ${BASH_REMATCH[1]}"
fi
あなたの入力を次のように取りましょう
入力.txt
ASD123
GHG11D3456
FFSD11dfGH
FF87SD54HJ
そして見つけたいパターンは「SD[数字][数字]」です。
コード
grep -o 'SD[0-9][0-9]' Input.txt
出力
SD12
SD11
SD54
そして、これをスクリプトで使用したい場合は、上記のコードを変数/配列に割り当てることができます...それは必要に応じてです。
$ foo="abcX23"
$ echo "$(echo "$foo" | sed 's/.*\(X[0-9][0-9]\)$/\1/')"
X23
また
if [[ "$foo" =~ X[0-9][0-9]$ ]]; then
echo "${foo:$((${#foo}-3))}"
fi
パラメータ展開を使用することもできます。
V="abcX23"
PREFIX=${V%%X[0-9][0-9]} # abc
SUFFIX=${V:${#PREFIX}} # X23