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

Исходное сообщение
"обработка логов..........."

Отправлено micolo , 05-Апр-06 10:47 
Доброго времени суток! У меня тут появилась необходимость написать shell-скрипт, построчной обработки логов, т.е. сопостовлять каждую строку с шаблоном регулярных выражений, производить другие манипуляции со строками на предмет соответствия. Затем переписать данный лог-файл с уже обработанными данными. У меня нет абсолютно никакой практики в написании шелл-скриптов. Каким образом можно решить данную задачу. Если будут ссылки на инфу или на примеры, буду очень признателен.

Содержание

Сообщения в этом обсуждении
"обработка логов..........."
Отправлено Дениска , 05-Апр-06 10:49 
>Каким образом можно решить данную задачу. Если будут ссылки на
>инфу или на примеры, буду очень признателен.
скорее всего вам должно хватить awk, sed.
соответственно man awk, man sed.  С примерами.



"обработка логов..........."
Отправлено redd , 05-Апр-06 13:32 
можно awk
можно perl

"обработка логов..........."
Отправлено micolo , 05-Апр-06 15:06 
а если лог файл весит 170 метров, что лучше с точки зрения производительности

"обработка логов..........."
Отправлено redd , 05-Апр-06 15:08 
вам шашечки или ехать ?

"обработка логов..........."
Отправлено micolo , 05-Апр-06 15:11 
>вам шашечки или ехать ?

всмысле некоррктный вопрос, или нет разницы



"обработка логов..........."
Отправлено redd , 05-Апр-06 16:46 
Ну ты это попробуй и скажи что вот этот скрипт при обр. файла 170 Мб тратит 5 сек , а мне нужно 4,5 сек по зарез

"обработка логов..........."
Отправлено redd , 05-Апр-06 13:38 
Ну вот так например

#!/usr/bin/perl
open (infile,"<in");
open (outfile,">out");

while ($str=<infile>){
$str=~/([0-9.]+)\s+(\d+)\s+(\d+)/g;
$IP{$1}+=$2;
$IP1{$1}+=$3;
}

for $key(sort keys %IP){
print outfile "$key $IP{$key} $IP1{$key}\n";
}
close (infile);
close (outfile);
exit 0