Вопрос о расширении параметров

sed '/./,$!d'

От первой строки, содержащей символ (пустой или нет), до конца файла - отрицание (что затем означает от начала файла до строки перед первой строка, содержащая символ) - удалить.

При этом удаляются первые пустые строки, но не пустые строки. Чтобы удалить первые пустые строки (пустые или содержащие только символы пробелов), скажите '/ \ S /, $! D' .

Прочтите «Sed, введение и учебное пособие» на http://www.grymoire.com/Unix/Sed.html . Затем прочтите справочное руководство по адресу https://www.gnu.org/software/sed/manual/sed.html .

Вкратце:

  • Общая форма команды sed - [селектор] [отрицание] команда [флаги] (квадратные скобки указывают необязательные части)

  • Селектор, если он присутствует, выбирает строки, к которым применяется команда

  • Если ! кажется, что он отменяет селектор, то есть заставляет команду применяться к строкам, которые не соответствуют селектору.

  • Если селектор отсутствует, команда применяется ко всем строкам.

  • Селектор может выбрать одну строку (по номеру) или набор строк (по регулярному выражению) или строки между начальной строкой (по номеру или регулярному выражению) и конечной строкой (по номеру или регулярному выражению).

  • В нашем случае селектором является /./, $ , что означает из первая найденная строка, которая соответствует /./ (то есть содержит хотя бы один символ) с до до конца файл ( $ используется как номер строки и означает последнюю строку в файле).

  • Оно отменяется ! , так что команда применяется к строкам от начала файла до строки перед первой совпадающей строкой /./ .

  • Команда d удаляет выбранные строки.

2
04.02.2016, 21:36
0 ответов

Теги

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