sed 在 XXX 之后的第一个空行上插入行

Rog*_*asy 0 bash sed

我正在使用 bash 脚本以交互方式编辑我的主机文件。我需要在我的主机文件中插入一行。该行需要插入特定注释后的第一个空行。我插入的内容在一个变量中。

这是我尝试过的(之前设置了 $NEWLINE):

sed -i '# Insert New DNS / Virtualbox/$NEWLINE/g' /etc/hosts

我没有收到错误,但没有写入该行。有什么建议吗?

Ani*_*tra 5

认为:

# Insert New DNS
Run Code Online (Sandbox Code Playgroud)

是您要在第一个空行后插入的行:

您可以通过以下命令实现此目的:

 sed -i '/# Insert New DNS/,/^$/s/^$/'"$NEWLINE"'/' /etc/hosts
Run Code Online (Sandbox Code Playgroud)

以下将在文件中搜索行号(地址):

/# Insert New DNS/,/^$/
Run Code Online (Sandbox Code Playgroud)

以下将替换“空行”

s/^$/'"$NEWLINE"'/
Run Code Online (Sandbox Code Playgroud)