regex - 如何从文件中获取一个值并忽略注释行?
问题描述
我正在尝试URL
从.env
文件中获取的值,但忽略以开头的行#
我的 .env
URL=staging
#URL=prod
OTHER_VAR=test
我正在尝试使用保存URL
变量内部的值grep
这是我所拥有的:
MY_VAR=$(grep URL ./.env | cut -d '=' -f 2-)
我曾尝试使用:
MY_VAR=$(grep -v '^#' ./.env | cut -d '=' -f 2-)
但不知道如何指定我想从中获取值的变量
解决方案
URL=
您可以仅使用单个sed
命令匹配以该文本开头的那些行并获取该文本之后的值:
MY_VAR="$(sed -n 's/^URL=//p' ./.env)";
在这里,-n
禁止默认行输出,在匹配行的开头s/^URL=//
删除(是字符串锚的开头)并打印结果,即之后的内容。URL=
^
p
URL=
如果之前可以有空格URL=
,您可以在[[:space:]]*
之后添加^
:
MY_VAR="$(sed -n 's/^[[:space:]]*URL=//p' ./.env)";
@Sundeep 的基于 PCRE 的grep
命令的工作方式类似。grep -oP '^URL=\K.+' ./.env
或grep -oP '^\s*URL=\K.+' ./.env
将产生与上述sed
命令相同的结果(在 PCRE 模式中,您可以将空格与\s
速记字符类匹配)。
推荐阅读
- ionic-framework - 如何在 ionic3 中设置个人资料图片功能
- excel - Excel - 计算列表中的项目,忽略文本但计算数字?
- c# - 如何从另一个列表中的列表中查找任何 ID
- reactjs - 使用字符串变量加载图像(需要)不起作用
- android - ListView 与 ImageView - 如何将不同的链接放置到列表中的每个 ImageView
- ios - TableViewCell 在可见路径重新加载行后未调整大小
- javascript - Laravel 一键组合两个 jquery 函数,将产品插入购物车
- git - Git过滤器分支:仅保留子目录中的提交
- python - 将 request.session 与 form.cleaned_data 一起使用时出现 DJANGO KeyError
- python - DJANGO:分配前引用的局部变量“usuarios”