テキストの正規表現部分を表示する方法

テキストの正規表現部分を表示する方法

次のような行のファイルがたくさんあります

lotsofblah/XY##_####_morefoo

ここで#は数字です。ここでは部分だけを表示したいのですが

YZ##_####

bash では、もちろんそれぞれ新しい行に記述します。

答え1

XY を任意の 2 文字にしたいと仮定します...

何かのようなもの

grep -Eo "[A-Z]{2}[0-9]{2}_[0-9]{4}" file

[2つの文字][2つの数字]_[4つの数字]に一致します

必要に応じて、前に / があり、後ろに _ があることを確認し、もう少し正確にすることもできますが、これは出発点です。

man grep からこれをまとめます:

-E, --extended-regexp
          Interpret PATTERN as an extended regular expression (see below)

-o, --only-matching
          Show only the part of a matching line that matches PATTERN.

そしてhttp://www.regular-expressions.info/reference.html

答え2

XYとYZは同じだと仮定し、XYとして扱うことにする。

egrep "XY[0-9]{2}_[0-9]{4}" filename -o

キーは、-o一致するテキストのみを表示するオプションです。

関連情報