![sed 在 XXX 之后的第一个空白行插入行](https://linux22.com/image/692093/sed%20%E5%9C%A8%20XXX%20%E4%B9%8B%E5%90%8E%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E7%A9%BA%E7%99%BD%E8%A1%8C%E6%8F%92%E5%85%A5%E8%A1%8C.png)
我正在使用 bash 脚本以交互方式编辑我的 hosts 文件。我需要在 hosts 文件中插入一行。该行需要插入到特定注释后的第一个空白行中。我插入的内容位于变量中。
这是我尝试过的($NEWLINE 之前已设置):
sed -i '# Insert New DNS / Virtualbox/$NEWLINE/g' /etc/hosts
我没有收到任何错误,但是没有写入该行。有什么建议吗?
答案1
认为:
# Insert New DNS
是您想要在其后插入第一个空行的行:
您可以通过以下命令实现此目的:
sed -i '/# Insert New DNS/,/^$/s/^$/'"$NEWLINE"'/' /etc/hosts
下面将在文件中搜索行号(地址):
/# Insert New DNS/,/^$/
以下内容将替换“空行”
s/^$/'"$NEWLINE"'/