如何使用 sed 替换配置文件的变量?
- 2024-11-14 08:30:00
- admin 原创
- 19
问题描述:
我一直在网上寻找这个答案但似乎找不到。
我有一个配置文件,其中包含:
VAR1=VALUE1
VAR2=VALUE2
VAR3=VALUE3
VAR4=VALUE4
VAR5=VALUE5
VAR6=VALUE6
我想将VAR5
的值从VALUE5
改为VALUE10
。不幸的是,我不知道 的值VALUE5
,所以我无法搜索它。所以基本上我需要使用 sed (或其他) 将 的值替换VAR5
为另一个值。
解决方案 1:
你可以尝试这个sed:
sed -i.bak 's/^(VAR5=).*/VALUE10/' file
它给出:
VAR1=VALUE1
VAR2=VALUE2
VAR3=VALUE3
VAR4=VALUE4
VAR5=VALUE10
VAR6=VALUE6
解决方案 2:
尽管答案已经添加到问题中。我花了一些时间研究它的工作原理,我想添加一些事实和我的答案版本,
sed -i 's,^(THISISMYVARIABLE[ ]*=).*,'THISISMYVALUE',g' config.cfg
解释:
作为 的基本用法
sed 's/find_this/replace_with/'
,我们使用 sed 来搜索和替换。另外请记住,我们可以使用多种其他分隔符来代替/
。这里,
使用的是 。在这里我们找到匹配的行
^(THISISMYVARIABLE[ ]*=).*
。这意味着我们正在对匹配进行分组THISISMYVARIABLE[ ]*=
。([ ]*
以覆盖键后是否有空格)替换部分
是反向引用。我们引用用于匹配的正则表达式中的第一个组。
解决方案 3:
你可以说:
sed '/^VAR5=/s/=.*/=VALUE10/' filename
要对文件进行就地更改,请使用以下-i
选项:
sed -i '/^VAR5=/s/=.*/=VALUE10/' filename
解决方案 4:
sed '/(^VAR5=).*/ s//VALUE10/' YourFile
在 AIX/KSH 下
$ cat sample.txt
VAR1=VALUE1
VAR2=VALUE2
VAR3=VALUE3
VAR4=VALUE4
VAR5=VALUE5
VAR6=VALUE6
$ sed '/(^VAR5=).*/ s//VALUE10/' sample.txt
VAR1=VALUE1
VAR2=VALUE2
VAR3=VALUE3
VAR4=VALUE4
VAR5=VALUE10
VAR6=VALUE6
并在文件中进行替换
cat <> YourFile | sed '/(^VAR5=).*/ s//VALUE10/'
$ cat <> sample.txt | sed '/(^VAR5=).*/ s//VALUE10/'
$ cat sample.txt
VAR1=VALUE1
VAR2=VALUE2
VAR3=VALUE3
VAR4=VALUE4
VAR5=VALUE10
VAR6=VALUE6
符合 POSIX(sed
部分不符合cat
)标准(--posix
gnu sed 上的 sed 和非 Linux 系统上的原生传统 sed)
解决方案 5:
尝试以下操作
sed -r 's/^(VAR5=).*/\1REPLACEMENT/'
VAR5 的值将被 REPLACEMENT 替换。
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD