サブパターンがターゲットスキーマに含まれる場合と含まれない場合があるように、すべての結果を特定する方法は?

サブパターンがターゲットスキーマに含まれる場合と含まれない場合があるように、すべての結果を特定する方法は?

次の結果を表す文字列を検索するとします。

anything1.knownKeyWord
anything2.knownKeyWord
anything3[1].knownKeyWord

3つの文字列すべてに一致するようにgrepの共通構文をどのように作成しますか?私はすでにこれをしました

^.*\w+\d[\[]?[0]?[\]]?\.knownKeyWord.*$  

しかし、インデックスについては[1]良い方法で書かれていませんでし[1][2342jdsjf]

ベストアンサー1

拡張正規表現を使用してください。

$ grep -E '[[:alnum:]_]+[[:digit:]]+(\[[^]]+\])?\.knownKeyWord' <file
anything1.knownKeyWord
anything2.knownKeyWord
anything3[1].knownKeyWord

これにより、次の形式の文字列を含むすべての行が抽出されます。

XXXNNN[YYY].knownKeyWord

または

XXXNNN.knownKeyWord

ここではXXX、空でない英数字文字列(含まれる場合があります_)、NNN1つ以上の数値文字列、およびYYY含まれていない文字列です]

grep-x一致する場合と一緒に使用完全なライン-w一致が完了する必要がある場合は、以下を使用してください。性格(つまり、他のものの部分文字列ではありません)


sed正規表現の各部分が一致する部分を表示するには、次のようにします。

$ sed -E 's/([[:alnum:]_]+)([[:digit:]]+)(\[[^]]+\])?(\.knownKeyWord)/<\1><\2><\3><\4>/' <file
<anything><1><><.knownKeyWord>
<anything><2><><.knownKeyWord>
<anything><3><[1]><.knownKeyWord>

おすすめ記事