ed: Удалить со строки 1 до первой пустой строки

Попробуйте следующее:

apt-get update; apt-get purge libapache2-mod-mono; apt-get -f install; apt-get install libapache2-mod-mono

Если это не поможет, прочтите здесь:

Как запустить mod_mono в Debian Jessie (отсутствует пакет libapache2-mod-mono)?

6
06.06.2019, 18:13
2 ответа

1,/.../ означает диапазон от 1-й строки до строки, соответствующей шаблону между /.

/^[ ]*$/соответствует строке, содержащей 0 или любое количество пробелов [ ]*от начала ^до конца $строки.
Неясно, является ли код в вопросе преднамеренным и является ли он точной копией книги. Скобки вокруг одного пробела не нужны. Возможно, первоначальный автор хотел, чтобы между скобками был пробел и символ табуляции, который можно было бы заменить классом символов [[:blank:]].

d— команда удаления строки

wзаписать файл

qвыйти из редактора

Эти команды отправляются на edчерез здесь документ , обозначенный как << EOF. Строка EOFпредставляет собой полу-произвольное имя, которое соединяется с другим EOFчетырьмя строками ниже. Если EOFоставить без кавычек, это означает, что любые переменные в промежуточных строках будут расширены.

Еще одна вещь, на которую следует обратить внимание, это $1в примере без кавычек. Команда/скрипт edбудет выполняться для первого позиционного параметра (аргумента скрипта или функции)при условии дальнейшего разделения пробелов и создания имени файла . Аргумент действительно должен быть процитирован. Для получения дополнительной информации см. . Почему мой сценарий оболочки забивается пробелами или другими специальными символами? и Последствия для безопасности, если забыли заключить переменную в кавычки в оболочках bash/POSIX .

4
27.01.2020, 20:27

Команда и ввод

$1— это имя файла, который нужно отредактировать, а все, что находится между EOF, — это команды для ed.

Пошаговое описание1,/^[ ]*$/d

  • 1,начать со строки1и в этом случае продолжить до первого появления строки поиска
  • /указывает, что мы собираемся искать строку
  • ^указывает, что мы хотим сопоставить начало строки в файле
  • [указывает, что мы собираемся указать много символов
  • ' ' мы хотим сопоставить пробел -обычно здесь было бы больше символов
  • ]завершено задание символов
  • *мы хотим сопоставить 0 или более пробелов (или любых других символов между[])
  • $до конца строки в файле
  • /закрытие поиска
  • dудалить строку

Затем следующая строка wзаписывает изменения, и qзавершает работу ed.

Эффект

Если первая строка файла($1)пуста или содержит только пробелы (без вкладок ), то она будет удалена.

3
27.01.2020, 20:27

Теги

Похожие вопросы