我正在为我的虚拟机构建一个 bash 脚本,我想知道如何替换此文档中的特定行:
[base]
## uncomment and set autologin username to enable autologin
# autologin=dgod
## uncomment and set timeout to enable timeout autologin,
## the value should >=5
# timeout=10
## default session or desktop used when no systemwide config
# session=/usr/bin/startlxde
这行:
# autologin=dgod
我想改成这个
autologin=ubuntu
我尝试过“tee”和“sed”,但无法正常工作。对于比我更经常使用 bash 脚本的人来说,这应该很容易。
答案1
您可以使用s
命令进行搜索和替换。
sed 's/# autologin=dgod/autologin=ubuntu/' /path/to/file
解释
s
- 这替代命令. 语法是s/regexp/replacement/flags
。# autologin=dgod
- 查找“# autologin=dgod”autologin=ubuntu
- 将其更改为“autologin=ubuntu”- 此命令中没有标志,因此它以
/
此命令将修改后的文本发送到 stdout(命令行),而不修改源文件。如果输出是您想要的,请添加-i
以就地更改文件:
sed -i 's/# autologin=dgod/autologin=ubuntu/' /path/to/file
答案2
我发现最有效的方法实际上是使用更改语法来设置所需的确切值,除非您明确尝试启用双向切换。您可以使用它来更改以及取消注释一行,无论它是如何注释的,使用#
或//
或<!--
。
sed 's%searchTerm=% c searchTerm=desiredValue%' targetFile.txt