На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL
Сообщение
SLEDopit » 06.12.2010 00:09
Совсем в тупик зашел
Есть файл вида
Код: Выделить всё
some text
==first
==second
some text
==third
Никак не могу сообразить, как удалить строку с ==first. Достоверно известно, только то, что строка начинается с ==, номер строки неизвестен и все остальные строки, начинающиеся с ==, нужно оставить.
Если это имеет значение, то до и после данной операции еще куча других махинаций происходит.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник
Сообщение
Nazyvaemykh » 06.12.2010 00:28
Что-то вроде этого:
sed '/==/ {$! N;D;:a;N;ba;}'
¡ Страсть к разрушению есть творческая страсть !
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник
Сообщение
Nazyvaemykh » 06.12.2010 00:35
Исправляю ошибку (команда “D“ это немного другое):
sed '/==/ {$!N;s/[^\n]*\n//;:a;N;ba;}'
¡ Страсть к разрушению есть творческая страсть !
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL
Сообщение
SLEDopit » 06.12.2010 00:38
Nazyvaemykh писал(а): ↑ 06.12.2010 00:35
sed '/==/ {$!N;s/[^\n]*\n//;:a;N;ba;}'
Спасибо, то что нужно.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник
Сообщение
Nazyvaemykh » 06.12.2010 01:00
А вот GNU-вариант с диапазонами:
sed -n '/^==/,$ !p;0,/^==/ !p'
¡ Страсть к разрушению есть творческая страсть !