0

長さ1の文字列で、次の文字のみがあるかどうかを確認しようとしています: [RGWBO]。

私は次のことを試みていますが、うまくいきません。何が欠けていますか?

if [[ !(${line[4]} =~ [RGWBO]) ]];
4

4 に答える 4

1

これは、使用可能な任意のバージョンの Bash で動作します。

[[ -n ${LINE[0]} && ${LINE[0]} != *[^RGWB0]* ]]

私は拡張グロブのシンプルさを好みますが:

shopt -s extglob
[[ ${LINE[0]} == +([RGWBO]) ]]
于 2013-09-08T14:50:16.680 に答える
0

アプローチ

  1. で文字列の長さをテストし、${#myString}1 に等しい場合はステップ 2 に進みます。
  2. あなたのパターンが含まれていますか。

コード

re='[RGWBO]'; 
while read -r line; do
  if (( ${#line} == 1 )) && [[ $line == $re ]]; then
    echo "yes: $line"
  else 
    echo "no: $line" 
  fi
done < test.txt

資力

次のリンクを参照してください。

データ

test.txtファイルにはこれが含まれています

RGWBO
RGWB
RGW
RG
R
G
W
B
O
V
于 2013-09-08T14:17:51.247 に答える