Редактировать: Я только что понял, что прочитал ваш вопрос неправильно, даже после того, как за него проголосовали несколько раз. Мой ответ раньше был выключен! Теперь он должен быть более правильным, но с некоторыми дополнительными допущениями . Простые решения могут дать вам только так далеко!
Это может помочь вам, с некоторыми предположениями:
cat -s data | awk -vFS='\n' -vRS='\n\n' '/Deprecated from/ { getline; next } 1'
Команда cat
просто предназначена для того, чтобы выжать лишние символы новой строки, поэтому awk
может работать легче. Что касается awk
, -vFS='\n'
сообщает, что поля разделены символами новой строки, а -vRS='\n\n'
сообщает, что записи разделены двумя символами новой строки подряд. Затем /Deprecated from/
находит записи с этим текстом, а { getline; next }
читает следующую запись после нее и заставляет ее двигаться дальше. 1
- это ярлык для печати строк, которые достигают следующей точки.
Это предполагает следующее :
- Все комментарии и текстовые блоки разделены хотя бы одной пустой строкой с обеих сторон
- Равномерно чередуются только блоки комментариев и текстовые блоки
- В текстовых блоках нет пустых строк
Так что это может быть не совсем идеально для вас. Если эти предположения верны, то, как вы видите, awk
хороший выбор для этой работы: скрипт крошечный!
$ cat -s data | awk -vFS='\n' -vRS='\n\n' '/Deprecated from/ { getline; next } 1'
-- /*********************************************************************************/
-- /* MIB table for Hardware */
-- /* Valid from: 543.44 */
-- /*********************************************************************************/
Some text
some text
Some text
Кроме того, как вы можете видеть, оставшиеся новые строки выталкиваются. Чтобы помочь этому, вы можете изменить команду следующим образом:
$ cat -s data | awk -vFS='\n' -vRS='\n\n' '/Deprecated from/ { getline; next } { printf "%s\n\n", $0 }'
-- /*********************************************************************************/
-- /* MIB table for Hardware */
-- /* Valid from: 543.44 */
-- /*********************************************************************************/
Some text
some text
Some text