我有一个像这样的小例子的文件:
# ...
# 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/ https://regex101.com/,但 Shell 正则表达式解释器似乎不同于pcre
and python
.
我最好的解决方案是找到mode=
and 一切在它之后。那么有没有办法只获取值呢?开始很容易......找到mode=
。但我怎么说 shell 正则表达式来把一切都抛在身后mode=
until下一个换行符?和不超过这个换行符?
一些与\n
(unix 换行符)和$
(字符串结尾)对我不起作用:(
谢谢您的帮助,
问候
您可以使用此正则表达式来获取匹配项:
conf=$(<"/etc/test.conf")
regex=$'mode=([^\n]*)'
[[ $conf =~ $regex ]] && echo "${BASH_REMATCH[1]}"
Output:
dev
Regex $'mode=([^\n]*)'
将匹配文字文本mode=
后跟 0 个或多个非任意字符\n
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)