次の結果を表す文字列を検索するとします。
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
、空でない英数字文字列(含まれる場合があります_
)、NNN
1つ以上の数値文字列、および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>