gpt4 book ai didi

regex - Shell 正则表达式到行尾

转载 作者:行者123 更新时间:2023-12-02 03:21:42 26 4
gpt4 key购买 nike

我有一个像这个小例子的文件:

# ...
# 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/ 测试了它们,但似乎 Shell 正则表达式解释器与 pcre 不同和 python .

我最好的解决方案是找到 mode=一切在它之后。那么有没有办法只获得值(value)?开始很容易...找到 mode= .但是我怎么说 shell 正则表达式把一切都抛在脑后 mode= 直到 下一个换行符?和 不超过这个换行?
\n 的东西(unix 换行符) 和 $ (字符串结尾)对我不起作用:(

谢谢您的帮助,
你好

最佳答案

您可以使用此正则表达式来匹配:

conf=$(<"/etc/test.conf")
regex=$'mode=([^\n]*)'
[[ $conf =~ $regex ]] && echo "${BASH_REMATCH[1]}"

输出:
dev

正则表达式 $'mode=([^\n]*)'将匹配文字文本 mode=后跟 0 个或多个不是 \n 的任何字符.

关于regex - Shell 正则表达式到行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32952541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com