Как вы используете регулярные выражения в скрипте bash - PullRequest
0 голосов
/ 05 июля 2019

Я застрял на чем-то очень простом с использованием регулярных выражений в скрипте bash. Я пытаюсь использовать регулярное выражение, чтобы отрезать .mkv, .avi или .mp4 и назначить его переменной. Затем я буду использовать эту переменную для создания папки, а затем переместить файл в папку.

Я пробовал:

folder="movie1.mkv" =~ "^\.mkv"

Но когда я запускаю его, он жалуется: =~: command not found

Я также пробовал:

kREGEX='^\.mkv'
folder="movie1.mkv"
[[ $folder =~ $kREGEX ]]

Может ли кто-нибудь показать полный, но простой скрипт, который использует регулярные выражения для назначения сопоставленного шаблона переменной?

Ответы [ 2 ]

1 голос
/ 05 июля 2019

с bash:

folder="movie1.mkv"
[[ "$folder" =~ (.*)\. ]] && echo "${BASH_REMATCH[1]}"

Сравнивает содержимое переменной $folder с регулярным выражением. (.*)\. сохраняет все (.*) перед точкой (\.) в поле 1 массива BASH_REMATCH. Если регулярное выражение совпадает, выведите содержимое ${BASH_REMATCH[1]}.

Выход:

movie1

См .: Часто задаваемые вопросы о регулярных выражениях переполнения стека

1 голос
/ 05 июля 2019

Для этого вам не нужно регулярное выражение, используйте оператор расширения параметра:

filename=movie1.mkv
folder=${filename%.mkv}
echo "$folder"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...