![]() |
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь. |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| Сопоставление полей строк, а затем операционная | ashis.tewari | Shell программирование и сценарии | 3 | 12-04-2008 09:02 AM |
| Сумма всех соответствие строк с использованием AWK | i.scientist | UNIX для чайников Вопросы И Ответы | 8 | 08-06-2008 08:13 PM |
| Как удалить дубликаты строк в файле | vamshikrishnab | Shell программирование и сценарии | 5 | 06-18-2008 10:00 |
| Как удалить частности, строки из файла | suresh3566 | Shell программирование и сценарии | 5 | 06-02-2008 05:07 AM |
| Удалить повторные строки из файла | tonet | Shell программирование и сценарии | 8 | 04-08-2008 09:42 AM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
SED: удалить строку соответствия и 4 следующего строк?
Привет,
Попытка найти решение, и нашли нечто подобное, но не смогли адаптировать решение для моих нужд .. Я пытаюсь соответствовать шаблону (в данном случае "ProcessType") в лог-файл, а затем удалить эту линию и 4 следующего содержания. В лог-файл выглядит следующим образом: Код:
ProcessType: PROCESS_A (0) <---- delete this SequenceNumber: 8285 <---- delete this <---- delete this 2009 Mar 07 22:04:23:679 0:8285 <---- delete this <---- delete this ProcessType: PROCESS_A (0) SequenceNumber: 8286 2009 Mar 07 22:04:23:679 0:8286 ProcessType: PROCESS_B (68) SequenceNumber: 40689 2009 Mar 07 22:04:23:698 68:40689 DATA that should not be deleted ProcessType: PROCESS_B (68) SequenceNumber: 40690 2009 Mar 07 22:04:23:698 68:40690 DATA that should not be deleted ProcessType: PROCESS_C (93) SequenceNumber: 36235 2009 Mar 07 22:04:23:829 93:36235 ProcessType: PROCESS_C (93) SequenceNumber: 36236 2009 Mar 07 22:04:23:829 93:36236 DATA that should not be deleted Код:
sed -e '/\<ProcessType\>/,/$/d' < log.txt > test Код:
2009 Mar 07 22:04:23:679 0:8285 2009 Mar 07 22:04:23:679 0:8286 2009 Mar 07 22:04:23:698 68:40689 2009 Mar 07 22:04:23:698 68:40690 2009 Mar 07 22:04:23:829 93:36235 2009 Mar 07 22:04:23:829 93:36236 2009 Mar 07 22:04:23:945 91:89062 2009 Mar 07 22:04:23:945 91:89063 2009 Mar 07 22:04:24:018 91:89064 2009 Mar 07 22:04:24:018 91:89065 2009 Mar 07 22:04:24:018 91:89066 |
|
||||
|
Если AWK разрешается:
Код:
awk '/ProcessType:/ && !p {i=-4;p=1} i++ > 0' file
|
|
||||
|
Благодаря Франклина, не работает для меня то же ..
Код:
# awk '/ProcessType:/ && !p {i=-4;p=1} i++ > 0' file
awk: syntax error near line 1
awk: bailing out near line 1
Код:
# nawk '/ProcessType:/ && !p {i=-4;p=1} i++ > 0' file
ProcessType: PROCESS_A (0)
SequenceNumber: 8286
2009 Mar 07 22:04:23:679 0:8286
ProcessType: PROCESS_B (68)
SequenceNumber: 40689
2009 Mar 07 22:04:23:698 68:40689
DATA that should not be deleted
ProcessType: PROCESS_B (68)
SequenceNumber: 40690
...
|
|
||||
|
Я понял вопрос, это должно исключить первые 4 строки во всех блоках:
Код:
nawk '/ProcessType:/{i=-4} i++ > 0' file
|
|
||||
|
Большой! Она работает прекрасно! спасибо
![]() |
![]() |
| Закладки |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|