Я имею дело с конкретными именами файлов, и мне нужно извлечь из них информацию.
Структура имени файла похожа на: "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
Как получить желаемый эффект.
Спасибо.