Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2016, 14:58   #1
Parallelogram
Недотепа
Форумчанин
 
Регистрация: 18.01.2011
Сообщений: 174
По умолчанию Удаление части текста из файла

Здравствуйте, у меня есть файл, в который в конец дописываются строки по 1000 в день. Как мне оставить последние добавленные 7000 строк, а остальные удалить?

Пример строк:
-------new------- 2016-04-19 07:20:02 - 2016-04-19 07:20:02 - Banned
-------new------- 2016-04-19 07:21:01 - 2016-04-19 07:21:04 - Not: 2
Parallelogram вне форума Ответить с цитированием
Старый 19.04.2016, 15:11   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Может лучше например logrotate https://www.google.com/search?q=logrotate?

А так что-то типа
Код:
tail -n 7000 myfile.log > myfile.tmp
cat myfile.tmp > myfile.log
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.04.2016, 15:24   #3
Parallelogram
Недотепа
Форумчанин
 
Регистрация: 18.01.2011
Сообщений: 174
По умолчанию

Спасибо, помогли
PHP код:
<?php
 
function transferFile$fname $line 700 ) {
    
$lines = @file($fname);
    if ( !
is_array($lines) ) {
        return 
false;
    }
    
$lines array_filter(array_map("trim" $lines) , function($v) { return (bool)$v; });
    if ( 
count($lines) > $line ) {
        
array_splice($lines count($lines) - $line);
        return @
file_put_contents$fname implode("\n" $lines) );
    }
    return 
true;
}
 
transferFile('primer.txt' 700);
Parallelogram вне форума Ответить с цитированием
Старый 19.04.2016, 15:36   #4
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

я бы вместо чтение всего файла, смещением сделал бы, та же функция fseek и быстрее и экономиченее, это сейчас в логе немного записей, а когда он будет гигабайтами исчисляться то будут проблемы
CodeNOT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
word 2007 удаление части текста в таблице lapin912 Microsoft Office Word 0 24.11.2015 17:04
Удаление части текста из ячейки. ydirect Microsoft Office Excel 1 27.06.2014 23:15
удаление части текста из файла(язык С) maxim3535 Помощь студентам 0 17.04.2013 01:26
Удаление из ячейки StringGrid части текста SPD Общие вопросы Delphi 3 21.08.2010 12:24
Вывод части текста из файла CoDeR Общие вопросы Delphi 10 16.08.2007 14:30