特定のファイル名を扱っており、それらから情報を抽出する必要があります。
ファイル名の構造は、「20100613_M4_28007834.005_F_RANDOMSTR.raw.gz」のようになります。
RANDOMSTR は最大 22 文字の文字列で、「-W[0-9].[0-9]{2}.[0-9]{3}」という形式の部分文字列を含む (または含まない) 場合があります。この部分文字列には、「-W」で始まる独自の機能もあります。
抽出する必要がある情報は、このオプションの部分文字列を除いた RANDOMSTR の部分文字列です。
これを bash スクリプトに実装したいのですが、これまでのところ、正規表現で gawk を使用するのが最善の方法です。これまでの私の最善の試みは失敗します:
gawk --re-interval '{match ($0,"([0-9]{8})_(M[0-9])_([0-9]{8}\\.[0-9]{3})_(.)_(.*)(-W.*)?.raw.gz",arr); print arr[5]}' <<< "20100613_M4_28007834.005_F_OTHER-STRING-W0.40+045.raw.gz"
OTHER-STRING-W0.40+045
期待される結果は次のとおりです。
gawk --re-interval '{match ($0,$regexp,arr); print arr[5]}' <<< "20100613_M4_28007834.005_F_SOME-STRING.raw.gz"
SOME-STRING
gawk --re-interval '{match ($0,$regexp,arr); print arr[5]}' <<< "20100613_M4_28007834.005_F_OTHER-STRING-W0.40+045.raw.gz"
OTHER-STRING
どうすれば望ましい効果を得ることができますか。
ありがとう。