The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Помогите написать скрипт на sed"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на рабочей станции (Офис и текст / Linux)
Изначальное сообщение [ Отслеживать ]

"Помогите написать скрипт на sed"  +/
Сообщение от komix74 email(ok) on 27-Май-12, 20:25 
В линуксе не силен, но так как под винду отсутствуют утилита sed либо подобная, пришлось обратиться к ее портированному аналогу под винду, есть текстовый mif файл следующего содержания:

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
    "Текст _"

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

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ной строки не исключен.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Помогите написать скрипт на sed"  +/
Сообщение от PavelR (ok) on 28-Май-12, 13:11 
>[оверквотинг удален]
> Text
>     "Текст N"
>     NNNN,NN NNNN,NN NNNN,NN NNNN,NN
>     Font ("Arial Cyr",0,0,0)
>     Angle 0,0000
> В идеале еще бы строки Font и Angle поменять, но с этим
> я разобрался) А вот с удалением 2ух последовательных строк никак не
> могу... рассматриваю все варианты.
> Отмечу что, количество строк одного блока Text и шапки, всегда остается неизменным,
> так что вариант удаления каждой Nной строки не исключен.

Man по sed
http://drbatty.ru/sed/ch06.html

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Помогите написать скрипт на sed"  +/
Сообщение от stereoPANDA on 28-Май-12, 18:29 
[root@zabbix ~]# cat 1 | nl
     1  Version 300
     2  Charset "WindowsCyrillic"
     3  Delimiter ","
     4  CoordSys NonEarth Units "m" Bounds (-9999,99, -9999,99) (9999,99, 9999,99)
     5  Columns 1
     6    ID Integer
     7  Data

     8  Text
     9      "Текст 1"
    10  Text
    11      "Текст 1"
    12      1111,11 1111,11 2222,22 2222,22
    13      Font ("Arial Cyr",0,0,0)
    14      Angle 0,0000

    15  Text
    16      "Текст 2"
    17  Text
    18      "Текст 2"
    19      3333,33 3333,33 4444,44 4444,44
    20      Font ("Arial Cyr",0,0,0)
    21      Angle 0,0000

    22  .......

    23  Text
    24      "Текст N"
    25  Text
    26      "Текст N"
    27      NNNN,NN NNNN,NN NNNN,NN NNNN,NN
    28      Font ("Arial Cyr",0,0,0)
    29      Angle 0,0000
[root@zabbix ~]# [root@zabbix ~]# cat 1 | sed 8,10d | sed 15,16d
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"
Text
    "Текст N"
    NNNN,NN NNNN,NN NNNN,NN NNNN,NN
    Font ("Arial Cyr",0,0,0)
    Angle 0,0000

в целом можно просто вырезать ненужные линии:
cat 1 | sed 8,10d | sed 15,16d (с 8й по 10, с 15 по 16 и тд).
Более элегантного способа я не сочиню.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Помогите написать скрипт на sed"  +/
Сообщение от Аноним (??) on 30-Июн-12, 00:47 
sed -e "$(grep -nm1 -B1 "Текст 1" $file | sed 's/^\([0-9]\+\).*$/\1d/')" $file
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру