sed 替换文件中的特定行

lew*_*s4u 21 command-line bash scripts sed

我正在为我的虚拟机构建一个 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
Run Code Online (Sandbox Code Playgroud)

这一行:

# autologin=dgod
Run Code Online (Sandbox Code Playgroud)

我想改成这个

autologin=ubuntu
Run Code Online (Sandbox Code Playgroud)

我尝试过“tee”和“sed”,但无法使其工作。对于比我更经常使用 bash 脚本的人来说,这应该很容易。

Zan*_*nna 33

这很简单。使用s命令 insed进行搜索和替换。

sed 's/# autologin=dgod/autologin=ubuntu/' /path/to/file
Run Code Online (Sandbox Code Playgroud)

如果您看到您想要的内容,请添加-i以更改文件到位

sed -i 's/# autologin=dgod/autologin=ubuntu/' /path/to/file
Run Code Online (Sandbox Code Playgroud)


dra*_*788 5

我发现最有效的方法实际上是使用更改语法来设置您想要的确切值,除非您明确尝试启用双向切换。您可以使用它来更改以及取消注释一行,无论它是如何注释的,使用#//<!--

sed 's%searchTerm=% c searchTerm=desiredValue%' targetFile.txt