
私は、各行の先頭で静的単語とオプションリストの単語を見つけるためにgrepで使用する正規表現を作成しようとしています。
つまり、私が望む一致形式は次のとおりですStaticWord-opt1
。StaticWord-opt2
これほぼ働く:
grep -E "^StaticWord-[(opt1)?(opt2)?(opt3)?]+" fileToCheck
ただし、次のような一致を取得しますStaticWord-opt1(
。StaticWord-p
StaticWord-1
これは、op1、opt2、またはopt3の単一インスタンスがある場合にのみ機能するため、式を次のように変更しました。
grep -E "^StaticWord-[(opt1)?(opt2)?(opt3)?]{1}" fileToCheck
この時点では、上記のリストの最後の2つのような一致のみを取得できます。
私の表現ロジックは「StaticWord-
最初に固定され、次のグループの1つが続きます。各グループは存在する場合もありません。^
最後に、[ ]
( )
?
〜しなければならないリストには1つしかありません{1}
。
答え1
Jordanが自分のコメントを回答に変換しない場合は、これについて拡張します。
この|
文字を使用して、「opt1、opt2、またはopt3」を意味できます。また、ただ欲しいなら一つ現れる人の中で、いいえを使用したいです+
。これは「または」を意味します。もっとこれにより、次のことに近づきます。
grep -E "^StaticWord-(opt1|opt2|opt3)" fileToCheck
...しかし、残りの行について質問があります。他のものが必要ない場合は、以下を使用してください。
grep -E "^StaticWord-(opt1|opt2|opt3)\$" fileToCheck
grep
(行末マークとして扱うようにドル記号をシェルからエスケープしました。)