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