10

bashスクリプトで、文字列からテキストパターンを抽出する簡単な方法は何ですか?

たとえばX、文字列の最後に2桁の数字を続けて抽出したいですか?

4

5 に答える 5

28

二重角かっこ=~を使用する場合は、気の利いた正規表現演算子があります。キャプチャされたグループは、アレイで使用できるようになります。$BASH_REMATCH

if [[ $STRING =~ (X[0-9]{2})$ ]]; then
    echo "matched part is ${BASH_REMATCH[1]}"
fi
于 2012-07-18T01:30:28.357 に答える
13

あなたの入力を次のように取りましょう

入力.txt

ASD123
GHG11D3456
FFSD11dfGH
FF87SD54HJ

そして見つけたいパターンは「SD[数字][数字]」です。

コード

grep -o 'SD[0-9][0-9]' Input.txt

出力

SD12
SD11
SD54

そして、これをスクリプトで使用したい場合は、上記のコードを変数/配列に割り当てることができます...それは必要に応じてです。

于 2012-07-18T04:51:15.447 に答える
7
$ 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
于 2012-07-18T01:28:03.300 に答える
3

パラメータ展開を使用することもできます。

V="abcX23"
PREFIX=${V%%X[0-9][0-9]} # abc
SUFFIX=${V:${#PREFIX}}   # X23
于 2012-07-18T01:34:37.020 に答える