Входные данные
Создадим для примера файл input.txt с таким содержанием:НАЧАЛО
this is line 1
this is line 2
some lines here
there are 2 blank lines above
this is last line
КОНЕЦ
Метки НАЧАЛО и КОНЕЦ не входят в содержание файла.
Решения на bash
Есть как минимум 6 вариантов решения этой задачи на bash.$ grep -v '^$' input.txt
Опция -v является сокращенной версией опции --invert-match, которая означает выбор только тех строк, которые НЕ подходят под заданный паттерн.$ grep '.' input.txt
В упрощенном виде вызов grep выглядит так:grep куча_всяких_опций [pattern] [file ...]
В данном случае берется файл input.txt и из него извлекаются все строки соответствующие заданному паттерну.
$ sed '/^$/d' input.txt
Synopsis:- sed [-Ealn] command [file ...]
- sed [-Ealn] [-e command] [-f command_file] [-i extension] [file ...]
$ sed -n '/^$/!p' input.txt
По умолчанию каждая строка ввода после всех примененных к ней команд выводится в поток стандартного вывода. Опция -n подавляет такое поведение.$ awk NF input.txt
awk - паттерно-ориентированный сканирующий и обрабатывающий язык.Вызов у него такой: awk [ -F fs ] [ -v var=value ] [ 'prog' | -f progfile ] [ file ... ]
NF - специальная переменная, означает количество полей в текущей записи.