LINUX.ORG.RU

Распарсить файл


0

0

Всем здрям, имеем лог вида:
172.24.78.4 2010-02-28 22:11:18 news.agent.mail.ru:443 0.00176907
Подскажите как преобразовать его в кучу файликов по ip, что бы он разбился на файли ip1.txt ip2.txt ip3.txt и т.д.

★★★★★

Ответ на: комментарий от sokol

Или я тебя непрально понял.. Тебе надо списки айпишников выцепить, или в зависимости от айпи адреса кидать в тот или иной файл всю строку лога?

sokol ()

как-то так:

for i in `cat log.txt | cut -f 1 -d ' ' | sort | uniq`; do
     cat log.txt | grep $i > $i.txt
done;

drull ★☆☆☆ ()

Re: Распарсить файл

Учите awk, дети, будете счастливы.

cat ... | awk '{print «Что надо в файл» > $1".txt"}'

sdio ★★★★★ ()
Ответ на: комментарий от sokol

в зависимости от айпи адреса кидать в тот или иной файл всю строку лога.

splinter ★★★★★ ()
Ответ на: комментарий от splinter

В баше же есть ассоциативный массив, можно его заюзать. А можно тупо так.

IFS='
'

for i n $(cat file)
do
    f=$(echo $i | cut -f1 -d' ')
    echo $i | cut -f2- -d' ' >> $f
done

Вот скриптик. Он берет первое поле - айпишник и всю оставшуюся строчку. Всю оставшуюся строчку сохраняет с файл с именем айпишника. Оно?

facelift ()
#!/usr/bin/perl
while(<>){
 if(/^(\d+\.\d+\.\d+\.\d+\s)(.*)$/){
  if(open(OUT,">>",$1)){
   print OUT $2;
   close(OUT);
  }
 }
}
SV0L0CH ()
Ответ на: комментарий от splinter

у меня там около 200 ip мне пол дня на это убивать не хочется.

Не распарсил твои логические связи

И что по твоему делает это?

awk '{print $0 > $1".txt"}'

sdio ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.