我正在处理一个特定的文件名,并且需要从中提取信息。
文件名的结构类似于:“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
我怎样才能得到想要的效果。
谢谢。