удалить многострочный блок текста с внутренним флагом в файле povray - PullRequest
1 голос
/ 10 мая 2010

У меня есть файл pov-ray, который определяет множество цилиндров и сфер. Иногда эти формы определяются как «color @», что делает povray невосстановимым. Одно из решений, которое я нашел, - удалить поврежденные цилиндры и сферы. Итак, файл, который содержит этот текст

 cylinder {
<    -0.17623,     0.24511,    -0.27947>, <    -0.15220,     0.22658,    -0.26472>,      0.00716
 texture { colorO }
 }
sphere { 
<    -0.00950,     0.00357,     0.00227>,      0.00716
 texture { color@ }
 }
 cylinder {
<    -0.00950,     0.00357,     0.00227>, <     0.00327,     0.00169,     0.00108>,      0.00716
 texture { color@ }
 }
sphere { 
<     0.15373,     0.00601,     0.18223>,      0.00716
 texture { colorO }
 }

превратится в этот текст

 cylinder {
<    -0.17623,     0.24511,    -0.27947>, <    -0.15220,     0.22658,    -0.26472>,      0.00716
 texture { colorO }
 }
sphere { 
<     0.15373,     0.00601,     0.18223>,      0.00716
 texture { colorO }
 }

Есть ли какой-нибудь способ сделать эту замену сценарием оболочки? Желательно в тсш. Спасибо!

1 Ответ

1 голос
/ 10 мая 2010
cat yourFile | egrep -B 2 -A 1 'color[^@].*' | egrep -v -- '^--$'

Это должно сработать, при условии, что приведенный вами пример является точным - то есть 2 строки до «цвета» и 1 строка после «цвета» - это строки, описывающие то, что вам нужно.

...