簡體   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