次のような行のファイルがたくさんあります
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.
答え2
XYとYZは同じだと仮定し、XYとして扱うことにする。
egrep "XY[0-9]{2}_[0-9]{4}" filename -o
キーは、-o
一致するテキストのみを表示するオプションです。