[英]Delete blank line and Inserting multiple lines with bash & sed - deleting single blank line before match
试图插入
主机:本地主机
端口:5432
用户名:postgres
密码:postgres
用 bash 脚本进入一个 database.yml 文件,我终于取得了一些成功。 这是到目前为止的脚本:
#!/bin/sed -f
/^development:/i\ \ host: localhost\n port: 5432\n username: postgres\n password: postgres
但它仍然在输入之前留下一个空行。 如何在同一个 bash 文件中删除它? 我现在需要的最后一件事是让输出从
Line
Line
host: localhost
port: 5432
username: postgres
到:
Line
Line
host: localhost
port: 5432
username: postgres
在上面的同一个 bash 文件中使用搜索和匹配参数。
好的,我无法让您的代码为自己工作(我认为它缺少一些)所以我只是以更简单的方式重写了您需要的内容。 让我们知道您为什么需要使用sed
,如果有的话:
#!/bin/bash
echo " host: localhost
port: 5432
username: postgres
password: postgres" > database.yml
这将简单地创建您需要的文件。 您不需要为此使用sed
。 关于你接下来的两个问题,如果你想删除第一个空行,你可以使用以下sed
命令:
sed -i '1d' database.yml
将1
替换为要删除的行号。 对于您的最后一个问题,如果您知道哪个行号为空,则可以使用上面的sed
命令,但如果没有,以下内容可以帮助您:
sed -i '/^$/d' database.yml
将删除 database.yml 文件中的所有空行。 您也可以使用awk
实现相同的效果(在此处阅读有关awk
更多信息):
awk 'NF' database.yml > database1.yml
您可以像使用awk
一样只删除第一个空白,如下所示:
awk 'NR!=1' database.yml > database1.yml
请注意,您不能将awk
输出到同一文件。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.