Самый легкий путь состоит в том, чтобы использовать atool: http://www.nongnu.org/atool/ Это - очень хороший сценарий, которые используют zip, разархивировали, смолят, rar и т.д. программы для извлечения любого архива.
Использовать atool -x package_name.zip
разархивировать их всех или если Вы хотите использовать его в каталоге со многим простым использованием zip-файлов for
цикл:
for f in *; do atool -x $f; fi
(Вы будете иметь к cd
в желаемый каталог с zip-файлами перед использованием этого).
Если я понимаю правильно, у Вас есть набор шаблонов, и Вы хотите извлечь одно соответствие на шаблон. Следующий awk сценарий должен добиться цели. Это печатает первое вхождение данного шаблона и записи, что шаблон был замечен, чтобы не распечатать последующие случаи.
awk '
/^2011-02-21.*MyKeyword.*Error/ {
if (!seen["^2011-02-21.*MyKeyword.*Error"]++) print;
next;
}
1 {if (!seen[""]++) print} # also print the first line that matches no pattern
'
Вот вариант, который сохраняет тот MyKeyword.*Error
строка в день.
awk '
/^[0-9]{4}-[0-9]{2}-[0-9]{2}.*MyKeyword.*Error/ {
if (!seen[substr($0,10) "MyKeyword.*Error"]++) print;
next;
}
'
Но если шаблон всегда один и тот же, например, [115027] MyKeyword[115028] всегда находится в одном и том же месте (например, [115029][2010-04-02 12:00:00] Ошибка: BaseController Что-то пошло не так[115030]), но вы хотите выяснить, какие строки могут быть в этой позиции, вы просто:
Interval Since Last Panic Report: 472 sec
Panics Since Last Report: 2
Anonymous UUID: D89B5624-FF95-48B5-8F55-0987EA2D2466
Sun Jun 26 18:02:46 2011
panic(cpu 0 caller 0x6e085e4a): "ntfs_map_runlist_nolock(): Called for $MFT/$DATA!\n"@/SourceCache/ntfs/ntfs-65.5/kext/ntfs_attr.c:245
Backtrace (CPU 0), Frame : Return Address (4 potential args on stack)
...
Kernel Extensions in backtrace (with dependencies):
com.apple.filesystems.ntfs(3.4)@0x6e05a000->0x6e0b9fff
BSD process name corresponding to current thread: mount_ntfs
, что должно дать вам что-то вроде
1 {print}
. Обратите внимание, что обработчик по умолчанию должен быть последним.next
ключевое слово заставляет все последующие обработчики быть пропущенными. – Gilles 'SO- stop being evil' 21.02.2011, 22:47