Я имею дело с определенными именами файлов и вам нужно извлечь информацию из них., соответствующий определенной подстроке с регулярными выражениями с использованием awk
Структура файла аналогична: «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
Как я могу получить желаемый эффект.
Спасибо.
Вы упомянули, что подстрока имеет образец `" -W [0-9]. [0-9] {2}. [0-9] {3} "` еще ваш пример ввода содержит `... W0.40 + 045.raw.gz`. Вам нужно угодить обоим? – 2010-12-15 14:37:16
Я не включаю «.raw.gz» в качестве части подстроки. – RogerFC 2010-12-15 14:54:12
Извините, я хотел обратить внимание на знак плюса, который не был бы покрыт вашим шаблоном. – 2010-12-15 15:01:14