Здравствуйте!
Есть исходный файл 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
Заранее большое спасибо!
> Помогите, пожалуйста, справиться с задачей: найти в тексте "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 '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 '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 строки, кстати?
> А почему принципиально с 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