У меня есть файл, как этот небольшой пример:Shell регулярного выражения до конца строки
# ...
# mode=dev
# ...
Где-то в этом файле существует «переменный» в рамках комментария. И я хотел бы получить значение с регулярным выражением в скрипте Shell.
Мой код до сих пор:
#!/bin/bash
conf=$(<"/etc/test.conf") # Get the file content
regex='mode=(.*)$' # Set a regex
if [[ $conf =~ $regex ]]; then # Search for the regex in the file
# We found it, so ...
echo "${BASH_REMATCH[1]}" # ... here is the value
fi
Моя большая проблема в том, что он не найдет значение :(
я попробовал много различных выражений регулярных выражений и протестировали их с https://regex101.com/, но мне кажется, что регулярное выражение interprator Shell отличается от pcre
и python
.
Мой лучшим решением было найти mode=
и все после. Так есть ли способ получить только значение? ГНА rt легко ... найти mode=
. Но как я могу сказать, что регулярное выражение оболочки, чтобы получить все за mode=
до следующей очереди? и не далее этот разлом?
Что-то с \n
(Unix LineBreak) и $
(конец строки) не работает для меня :(
Спасибо за помощь,
приветствия
try 'mode = [^ \ n] +' где '[^ \ n]' соответствует чему-либо, что _isn't_ новой строке. Кроме того, вам нужно установить модификаторы в [tag: Shell]? –
Я уже пробовал это, и когда я это делаю, он делает несколько строк. Может быть, еще одна строка, тогда '\ n'? – christopher2007
может быть возвратом каретки. попробуйте 'mode = [^ \ r \ n]' вместо –