0

文字列が与えられたら、2文字(9&0。0はそのサブ文字列の最後の文字である必要があります)とその間にある2文字に一致するサブ文字列を検索します

string="asd20 92x0x 72x0 YX92s0 0xx0 92x0x"
#I want to select substring YX92s0 from that above string

for var in $string
do
if [[ "$var" == *9**0 ]]; then
    echo $var  // Should print YX92s0 only
fi
done

明らかに、この上記のコマンドは機能しません。

4

2 に答える 2

1

各要素をパターンと照合します*9??0。これを行うにはいくつかの方法があります。これは、文字列を使用してサブシェルに位置パラメーターを設定し、forループでそれらを反復処理するものです。

( set -- $string
  for elt; do [[ $elt == *9??0 ]] && { echo "found"; exit; }; done )
于 2013-03-18T21:58:55.903 に答える
0
string="asd20 92x0x 72x0 X92s0 0xx0"

if [[ $string =~ [[:space:]].?9.{2}0[[:space:]] ]]; then
    echo "found"
fi

または、単語分割を利用することをお勧めします。

string="asd20 92x0x 72x0 X92s0 0xx0"

for s in $string; do
    if [[ $s =~ (.*9.{2}0) ]]; then
        echo "${BASH_REMATCH[1]} found"
    fi
done

これはを使用した正規表現です。

于 2013-03-18T21:30:07.807 に答える