URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9381
[ Назад ]

Исходное сообщение
"AWK или SED поиск слова и удаление строк выше и ниже результата"

Отправлено Alk13 , 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
  
Заранее большое спасибо!


Содержание

Сообщения в этом обсуждении
"AWK или SED поиск слова и удаление строк выше и ниже результата"
Отправлено Andrey Mitrofanov , 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

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

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


"AWK или SED поиск слова и удаление строк выше и ниже результата"
Отправлено Alk13 , 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

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


"AWK или SED поиск слова и удаление строк выше и ниже результата"
Отправлено musinov , 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 строки, кстати?


"AWK или SED поиск слова и удаление строк выше и ниже результата"
Отправлено Alk13 , 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