Который день не могу проблему решить: нужно в файле с данными типа:
010918 121321546
010919 466655
010920 546233
010921 6546546
Переодически удалять строку начало которой совпадает с $data, первая часть строки - это год, мес. и день. Т.е. если есть такая строка она удаляется, а на ее место записывается другая.
Пример реализации:
open(traf,"</path/to/file) or die $!;
@a=grep(!/$data/,<traf>);
close(traf);
open(traf,">/path/to/file) or die $!;
printf traf @a;
close(traf);
Не работает почему-то, все что со второй строки в файле удаляет :-(
Может есть другие варианты ?
Детский сад какой-то !!!
man sh
man awk
man sed
man perl
....КНИЖКИ ЧИТАЙ! Две недели дурацкие вопрсы задаешь.
Давно написАл бы.
moget po drugomu?
open(traf,"</path/to/file) or die $!;
@a=<traf>;
close(traf);
open(traf,">/path/to/file) or die $!;
while <traf>
{
print traf if !/$data/;
}
close(traf);
???
tfu blin, smorozil toge...
tama v seredine:
"while <traf>" zameni na "while $_=@a"
vrode tak
koroche v itoge:open(traf,"</path/to/file") or die $!;
@a=<traf>;
close(traf);
open(traf,">/path/to/file") or die $!;
while ($_=$a[$i])
{
$i++;
print traf if !/$data/;
}
close(traf);
Вы что, обалдели, ему ПЕРИОДИЧЕСКИ:)open(FILE,"|tail -f /path/ti/file") or die;
while(<FILE>){ unless m/date/ print $_;}nohup Этот_Скрипт &
перл все сам закроет.
Я на всякий извенюсь, "обалдели" касается файлов размером мег в 300-800.