删除空行和使用 bash & sed 插入多行 - 在匹配之前删除单个空白行



正在尝试插入

主机

:本地主机

端口:5432

用户名: Postgres

密码: 邮政

到一个带有bash脚本的database.yml文件中,我终于取得了一些成功。这是到目前为止的脚本:

#!/bin/sed -f
/^development:/i  host: localhostn  port: 5432n  username: postgresn  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

将删除数据库.yml 文件中的所有空白行。您也可以使用awk实现相同的目标(在此处阅读有关awk的更多信息(:

awk 'NF' database.yml > database1.yml

您可以像使用如下所示awk一样仅删除第一个空白:

awk 'NR!=1' database.yml > database1.yml

请注意,不能将awk输出到同一文件。

希望这有帮助。

最新更新