The OpenNET Project / Index page

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

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

"AWK или SED поиск слова и удаление строк выше и ниже результата"  +/
Сообщение от Alk13 on 09-Фев-12, 17:19 
Здравствуйте!
Есть исходный файл TXT следующего вида:
\\?\UNC\rni-03\temp
  
    Owner: @dname@\prt
  
    Group: @dname@\Domain Users
  
    DACL(not_protected+auto_inherited):
    [no implicit permissions]
  
    SACL:
    [NULL]
  
\\?\UNC\rni-03\temp\1\2
  
    Owner: @dname@\prt
  
    Group: @dname@\Domain Users
  
    DACL(not_protected+auto_inherited):
    [no implicit permissions]
  
    SACL:
    [NULL]
  
\\?\UNC\rni-03\temp\1\2\3
  
    Owner: @dname@\prt
  
    Group: @dname@\Domain Users
  
    DACL(not_protected+auto_inherited):
    [no implicit permissions]
  
    SACL:
    [NULL]
  
\\?\UNC\rni-03\temp\1\2\33
  
    Owner: @dname@\prt
  
    Group: @dname@\Domain Users
  
    DACL(not_protected+auto_inherited):
    [no implicit permissions]
  
    SACL:
    [NULL]
  
\\?\UNC\rni-03\temp\1\2\33\433
  
    Owner: @dname@\prt
  
    Group: @dname@\Domain Users
  
    DACL(not_protected+auto_inherited):
    @dname@\cpc   read_execute   allow   container_inherit+object_inherit
  
    SACL:
    [NULL]

Помогите, пожалуйста, справиться с задачей: найти в тексте "no implicit permissions" , удалить её , удалить 6 строк вышы и 3 строки ниже. Поиск начиная с 13 строки.  
  
  
Должно получится вот так:
\\?\UNC\rni-03\temp
  
    Owner: @dname@\prt
  
    Group: @dname@\Domain Users
  
    DACL(not_protected+auto_inherited):
    [no implicit permissions]
  
    SACL:
    [NULL]
  
\\?\UNC\rni-03\temp\1\2\33\433
  
    Owner: @dname@\prt
  
    Group: @dname@\Domain Users
  
    DACL(not_protected+auto_inherited):
    @dname@\cpc   read_execute   allow   container_inherit+object_inherit
  
    SACL:
    [NULL]


Windows XP x86
  
Заранее большое спасибо!

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

Оглавление

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


1. "AWK или SED поиск слова и удаление строк выше и ниже результата"  +/
Сообщение от Andrey Mitrofanov on 09-Фев-12, 17:43 
> Помогите, пожалуйста, справиться с задачей: найти в тексте "no implicit permissions" ,
> удалить её , удалить 6 строк вышы и 3 строки ниже.
> Поиск начиная с 13 строки.

|awk 'BEGIN{RS="\n\n\\\\\?";ORS=""}!/no implicit permissions/{print RS""$0}'
|awk '!/^$/{s=(s!=""?s"\n":"")""$0;next}s!~/no implicit permissions/{print s;print}{s=""}'

В первом случае - в начале бубут лишние пустые строки.
Во втором - в конце вх.файла _нужна пустая строка, а то последняя запись потеряется.

$ awk --version|head -1
GNU Awk 3.1.5

Проверял на других данных - возможно, со слэшами в RS= промазал.

> Windows XP x86

Это не лечится.

>  Заранее большое спасибо!

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

2. "AWK или SED поиск слова и удаление строк выше и ниже результата"  +/
Сообщение от Alk13 on 10-Фев-12, 00:34 
> |awk 'BEGIN{RS="\n\n\\\\\?";ORS=""}!/no implicit permissions/{print RS""$0}'

  awk: 'Begin{RS=\n\n\\\\\?";ORS=""}!/no
  awk: ^ invalid char ''' in expression

> |awk '!/^$/{s=(s!=""?s"\n":"")""$0;next}s!~/no implicit permissions/{print
> s;print}{s=""}'

  awk: '!/^$/{s=(s!=""?s"\n":"")""$0;next}s!~/no
  awk: ^ invalid char ''' in expression

> Это не лечится.

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

3. "AWK или SED поиск слова и удаление строк выше и ниже результата"  +/
Сообщение от musinov email(ok) on 10-Фев-12, 15:18 
>> |awk 'BEGIN{RS="\n\n\\\\\?";ORS=""}!/no implicit permissions/{print RS""$0}'
>   awk: 'Begin{RS=\n\n\\\\\?";ORS=""}!/no
>   awk: ^ invalid char ''' in expression
>> |awk '!/^$/{s=(s!=""?s"\n":"")""$0;next}s!~/no implicit permissions/{print
>> s;print}{s=""}'
>   awk: '!/^$/{s=(s!=""?s"\n":"")""$0;next}s!~/no
>   awk: ^ invalid char ''' in expression
>> Это не лечится.

Найти номер строки с помощью grep -n фраза файл.
Выяснить тогда диапазон строк от и до и удалить sed 'xx,yyd' > выходной файл
А почему принципиально с 13 строки, кстати?

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

4. "AWK или SED поиск слова и удаление строк выше и ниже результата"  +/
Сообщение от Alk13 (ok) on 10-Фев-12, 17:44 
> А почему принципиально с 13 строки, кстати?

первый блок:
\\?\UNC\rni-03\temp
  
    Owner: @dname@\prt
  
    Group: @dname@\Domain Users
  
    DACL(not_protected+auto_inherited):
    [no implicit permissions]
  
    SACL:
    [NULL]
должен остаться даже если имеет значение [no implicit permissions]чтобы видеть корень \\?\UNC\rni-03\temp


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

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

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




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

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