Хорошо, я не мог заставить ваш код работать на себя (я думаю, что его не хватает), поэтому я просто переписал то, что вам нужно, гораздо проще. Дайте нам знать, почему вам нужно использовать 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
в один и тот же файл.
Надеюсь, это поможет.