Я просто хочу получить номер файла, который может быть или не быть gzip'd. Однако, похоже, что регулярное выражение в sed не поддерживает ?
. Вот что я пробовал:
echo 'file_1.gz'|sed -n 's/.*_\(.*\)\(\.gz\)?/\1/p'
и ничего не было возвращено. Затем я добавил ?
к анализируемой строке:
echo 'file_1.gz?'|sed -n 's/.*_\(.*\)\(\.gz\)?/\1/p'
и получил:
1
Итак, похоже, что ?
, используемый в большинстве регулярных выражений, не поддерживается в sed, верно? Хорошо, тогда мне бы хотелось, чтобы sed дал 1
для file_1
и file_1.gz
. Какой лучший способ сделать это в bash script, если время выполнения критически важно?