LinuxForum.Fans
Тема

Помогите написать скрипт на sed

Автор: komix74 2 сообщений 995 просмотров
#254766

В линуксе не силен, но так как под винду отсутствуют утилита sed либо подобная, пришлось обратиться к ее портированному аналогу под винду, есть текстовый mif файл следующего содержания:

text
Version 300
Charset "WindowsCyrillic"
Delimiter ","
CoordSys NonEarth Units "m" Bounds (-9999,99, -9999,99) (9999,99, 9999,99)
Columns 1
  ID Integer
Data

Text "Текст 1" Text "Текст 1" 1111,11 1111,11 2222,22 2222,22 Font ("Arial Cyr",0,0,0) Angle 0,0000

Text "Текст 2" Text "Текст 2" 3333,33 3333,33 4444,44 4444,44 Font ("Arial Cyr",0,0,0) Angle 0,0000

.......

Text "Текст N" Text "Текст N" NNNN,NN NNNN,NN NNNN,NN NNNN,NN Font ("Arial Cyr",0,0,0) Angle 0,0000

Необходимо удалить первую встречающуюся пару:

text
Text
    "Текст _"

В результате чего текстовой файл должен принять следующий вид:

text
Version 300
Charset "WindowsCyrillic"
Delimiter ","
CoordSys NonEarth Units "m" Bounds (-9999,99, -9999,99) (9999,99, 9999,99)
Columns 1
  ID Integer
Data

Text "Текст 1" 1111,11 1111,11 2222,22 2222,22 Font ("Arial Cyr",0,0,0) Angle 0,0000

Text "Текст 2" 3333,33 3333,33 4444,44 4444,44 Font ("Arial Cyr",0,0,0) Angle 0,0000

.......

Text "Текст N" NNNN,NN NNNN,NN NNNN,NN NNNN,NN Font ("Arial Cyr",0,0,0) Angle 0,0000

В идеале еще бы строки Font и Angle поменять, но с этим я разобрался) А вот с удалением 2ух последовательных строк никак не могу... рассматриваю все варианты.
Отмечу что, количество строк одного блока Text и шапки, всегда остается неизменным, так что вариант удаления каждой Nной строки не исключен.

#254777

удалить две строки не сложно:
sed '/^Text/{N;d}'
а вот остановится после первого вхождения у меня кривовато получилось:
sed -n '/^Text/{N;s/.*//;:loop n;p;s/.*//;b loop};p'

Войдите или зарегистрируйтесь, чтобы ответить.