4

bash (バージョン 3.2.48) スクリプトでは、次のような文字列を取得します。

「XY」
「Y」
「YY」
など

したがって、アルファベット文字またはスペース (最初のスロット) のいずれかがあり、次に関連する文字 (2 番目のスロット) があります。次のようないくつかのバリエーション(grep、sedなどなし)を試しました:

if [[ $string =~ ([[:space]]{1}|[[:alpha:]]{1})M ]]; それから

if [[ $string =~ (\s{1}|.{1})M ]]; それから

しかし、私のソリューションは常に正しく機能するとは限りませんでした(すべての組み合わせが正しく一致しました)。

4

3 に答える 3

2

正規表現を使用しない場合は、単純なパターン マッチングで十分です。

if [[ $string == [[::upper:]\ ]M ]]; then
  echo match
fi

あなたの例を考えると、あなた[[:upper:]]は単にではなく欲しい[[:alpha:]]

于 2012-08-05T01:10:25.257 に答える