Как добавить дефисы в первую пустую строку текстового файла?

Я пытаюсь добавить три дефиса в первую пустую строку данного текстового файла и пытаюсь использовать sed для этого. Мой исходный файл (файл MultiMarkdown) выглядит примерно так:

 title: "Ch. 1: Unparticipated Causality" author: Jonathan Greig biblio-files: bibliography.bib biblio-style: chicago-authordate mainfont: Linux Libertine O linestretch: 1.5 documentclass: article geometry: margin=1in citecolor: black linkcolor: black ## Ch 1: Unparticipated Causality ## 

Между linkcolor: black и ## Ch 1 ... ## , я пытаюсь добавить несколько тире ( --- ). Не совсем уверен, как это сделать … следующая команда не дала мне:

 sed '/^$/a ---' Chapter1Rev4.md 

В настоящее время результатом является «команда a ожидает», затем текст », и не уверен, как добавить обратную косую черту или как избежать дефиса / дефиса.

4 Solutions collect form web for “Как добавить дефисы в первую пустую строку текстового файла?”

 { sed -e/./b -es/$/---/\;q; cat; } <in >out 

… не только заменит только первую пустую строку w / three hypens, она также даст указание sed на q uit, пытаясь прочитать входной файл, как только будет найдена первая пустая строка, и просто cat остальную часть. Однако, если вы используете GNU sed вы захотите использовать переключатель -u nbufferred.

Пытаться

 sed 's/^$/---/' Chapter1Rev4.md 

сделать это во всех пустых строках. Для этого в первом случае я буду использовать awk следующим образом:

 cat Chapter1Rev4.md | awk '{ if ($0 == "") { n++; if (n<2) print "---"; else print $0 } else print $0}' 

(или перенаправить вывод в новый файл с добавленным > newfile ).

Другой sed :

 sed -e '/^$/{ s/$/---/ t1 }' -e:1 -en\;b1 <file 

с этим будет выглядеть так:

 sed '0,/^$/{ /^$/a \ --- }' yourfilename 

или, если вы хотите заменить вместо append:

 sed '0,/^$/{s/^$/---/}' yourfilename 

сценарии sed – для ясности

 # from the first line through the first empty line 0,/^$/{ # no \ needed here, just append it /^$/a --- } 

или

 # from the first line through the first empty line 0,/^$/{ # replace empty lines with `---' s/^$/---/ } 

это работает, потому что адреса блока ограничивают его до определенного диапазона (первая строка через первую пустую новую строку), только в строке, где закрывается блок, будет только команда, s/^$/---/ , что-то сделать ,

  • Каково первое событие / файл / журнал в Linux, который появляется / изменяется при загрузке, сигнализируя о том, что сеть работает?
  • Как я могу запустить sed для замены строк в файле или делать подобные вещи в PHP?
  • Создание одного файла из другого на основе условий поиска
  • UDEV выполняет скрипт bash только частично
  • case + как реализовать равный или меньше или больше в случае синтаксиса
  • Ввести некоторые поля в диалоговом окне
  • Выход Cronjob в журнал
  • Сломанная труба в моем rsync.sh
  • Подстановка Bash с переменной, определенной из шаблона glob
  • Авторизация в SSH-соединении в OneLine
  • Повторяя что-то с несколькими кавычками и ключевыми символами (&, $,! И т. Д.),
  • Linux и Unix - лучшая ОС в мире.