как sed\awk удалить все одинарные пустые строки?

как sed или awk удалить все одинарные пустые строки?
я вот так удалял
tr -d '\n'
касательно одинарных не знаю
grayich
одинарные пустые строки
Нужно определиться — что означает одинарная пустая строка?
Если символ конца строки стоит на 1-ом месте (проверка cat -E /file), то два варинта для удаления всех таких строк в файле
- sed '/^$/d' /file
- sed '/./!d' /file
Если символ конца строки стоит не на 1-ом месте, то есть имеются отступы (пробелы,табуляции), то сначала нужно убрать эти отступы (выровнять по левому краю)
- sed 's/^[ t]*//' /file
....... а вторым заходом уже удаляем все эти пустые строки ...
Ошибки не исчезают с опытом - они просто умнеют
vasek, одинарная пустая строка это ^$
варианты выше не вариант, т.к. удаляют также двойные, тройные и т.п. пустые строки
grayich
vasek, одинарная пустая строка это ^$
варианты выше не вариант, т.к. удаляют также двойные, тройные и т.п. пустые строки
Покажи пример текста что должно получиться.
Lupus pilum mutat, non mentem.
grayich
двойные, тройные и т.п. пустые строки
Не понятно ..... что это такое ....... согласен с jim945 - нужен пример ...
Ошибки не исчезают с опытом - они просто умнеют
Кажется дошло значение «двойные, тройные и т.п. пустые строки» … не это???
$ cat -E ~/test.txt
111$
$
222$
$
$
333$
$
$
$
444$
$
$
$
$
555$
$ sed '/./,/^$/!d' ~/test.txt > ~/test_.txt …. и в итоге получаем по 1-ой пустой строке вместо нескольких
$ cat -E ~/test_.txt
111$
$
222$
$
333$
$
444$
$
555$
Если это, то имеется два варианта
- sed '/./,/^$/!d' - допускается 0 пустых строк в начале и 1 в конце файла
- sed '/^$/N;/\n$/D' - допускается 1 пустая строка в начале и 0 в конце файла
Ошибки не исчезают с опытом - они просто умнеют
vasek
grayich
удалить все одинарные пустые строки
grayich
варианты выше не вариант, т.к. удаляют также двойные, тройные и т.п. пустые строки
например, есть:
111
/n
222
333
/n
444
/n
/n
555
/n
/n
/n
666
на выходе, на сколько я понял, нужно получить это:
111
222
333
444
/n
/n
555
/n
/n
/n
666
то есть, нужно удалить пустую строку запертую между двумя не пустыми

п.с.
пока есть такой вариант:
$  awk 'BEGIN{RS="\n\n"}{print}'
удаляет запертые пустые строки, но и сводит 2 и больше пустых строк в одну
111
222
333
444
/n
555
/n
666
red
то есть, нужно удалить пустую строку запертую между двумя не пустыми
Значит я не правильно понял ......
Нужен пример ......... что на входе ......... что на выходе
Ошибки не исчезают с опытом - они просто умнеют
И похоже, в самом общем случае, лучше написать скрипт, который читает построчно и если встречается пустая строка, то определяется действие, что с ней делать, в зависимости от условия ... готовых решений sed для общего случая нет, а писать ... то уж проще скрипт, используя в нем стандартные команды sed ...
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.