sed '/./,$!d'
От первой строки, содержащей символ (пустой или нет), до конца файла - отрицание (что затем означает от начала файла до строки перед первой строка, содержащая символ) - удалить.
При этом удаляются первые пустые строки, но не пустые строки. Чтобы удалить первые пустые строки (пустые или содержащие только символы пробелов), скажите
'/ \ S /, $! D'
.Прочтите «Sed, введение и учебное пособие» на http://www.grymoire.com/Unix/Sed.html . Затем прочтите справочное руководство по адресу https://www.gnu.org/software/sed/manual/sed.html .
Вкратце:
Общая форма команды sed
- [селектор] [отрицание] команда [флаги] (квадратные скобки указывают необязательные части)
Селектор, если он присутствует, выбирает строки, к которым применяется команда
Если !
кажется, что он отменяет селектор, то есть заставляет команду применяться к строкам, которые не соответствуют селектору.
Если селектор отсутствует, команда применяется ко всем строкам.
Селектор может выбрать одну строку (по номеру) или набор строк (по регулярному выражению) или строки между начальной строкой (по номеру или регулярному выражению) и конечной строкой (по номеру или регулярному выражению).
В нашем случае селектором является /./, $
, что означает из первая найденная строка, которая соответствует /./
(то есть содержит хотя бы один символ) с до до конца файл ( $
используется как номер строки и означает последнюю строку в файле).
Оно отменяется !
, так что команда применяется к строкам от начала файла до строки перед первой совпадающей строкой /./
.
Команда d
удаляет выбранные строки.