繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM