powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как удалить начальные строки файла?
16 сообщений из 16, страница 1 из 1
Как удалить начальные строки файла?
    #38299224
Фотография Stasonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напр. file.txt состоит из 20-ти строк. Нужно удалить 1-ые 5, оставив последние 15.
...
Рейтинг: 0 / 0
Как удалить начальные строки файла?
    #38299243
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так как желаемый ЯП не указан, предлагаю sed и tail, которые вполне справятся с указанной задачей.
...
Рейтинг: 0 / 0
Как удалить начальные строки файла?
    #38299303
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stasonix,
Код: php
1.
file_put_contents('file.txt', join('',array_slice(file('file.txt'), 4)));
...
Рейтинг: 0 / 0
Как удалить начальные строки файла?
    #38299423
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleТак как желаемый ЯП не указан, предлагаю sed и tail, которые вполне справятся с указанной задачей.
+1.
Я седом пользуюсь, как более универсальным.
...
Рейтинг: 0 / 0
Как удалить начальные строки файла?
    #38299491
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u,

для больших файлов не вариант
...
Рейтинг: 0 / 0
Как удалить начальные строки файла?
    #38299495
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stasonixfile.txt состоит из 20-ти строк.
artasдля больших файлов не вариант
где вы увидели большие файлы?))

для больших я бы предложил другой вариант.
...
Рейтинг: 0 / 0
Как удалить начальные строки файла?
    #38299553
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
r uStasonixfile.txt состоит из 20-ти строк.
artasдля больших файлов не вариант
где вы увидели большие файлы?))

для больших я бы предложил другой вариант.
А как быть с большими текстовыми файлами используя только php (т.е. без system, exec и т.п) ?
...
Рейтинг: 0 / 0
Как удалить начальные строки файла?
    #38299562
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
phpzА как быть с большими текстовыми файлами используя только php (т.е. без system, exec и т.п) ?
читать построчно, писать блоками..
fopen(), fgets() fwrite()
...
Рейтинг: 0 / 0
Как удалить начальные строки файла?
    #38299664
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
r uphpzА как быть с большими текстовыми файлами используя только php (т.е. без system, exec и т.п) ?
читать построчно, писать блоками..
fopen(), fgets() fwrite()
Допустим есть текстовой файл и в нем 500 000 строк. Неужели для того, чтобы удалить первые 5 строк, нужно прочитать и записать последующие 499 995, которые вообще не никак не изменяются?
...
Рейтинг: 0 / 0
Как удалить начальные строки файла?
    #38299697
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
phpzДопустим есть текстовой файл и в нем 500 000 строк. Неужели для того, чтобы удалить первые 5 строк, нужно прочитать и записать последующие 499 995, которые вообще не никак не изменяются?
что в вашем понимании УДАЛИТЬ 5 строк?
если просто удалить информацию из строк и записать вместо неё пустые строки - то можно остальные и не перезаписывать.
а если нужно именно удалить, тоесть чтобы первой строкой стала пятая, второй шестая и т.д. то без перезаписи никак.
что есть файл? именованная область памяти. эта область начинается по вполне определенному адресу.
размер может меняться, а начало файла остается неизменным. если меняется адрес начала - то это уже другой файл.

или вы знаете другой способ?
...
Рейтинг: 0 / 0
Как удалить начальные строки файла?
    #38299713
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uStasonixfile.txt состоит из 20-ти строк.
artasдля больших файлов не вариант
где вы увидели большие файлы?))А где видно что файлы маленькие? Двадцать строк по сто миллионов символов в каждой так и будут двадцатью строками.
...
Рейтинг: 0 / 0
Как удалить начальные строки файла?
    #38299776
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleА где видно что файлы маленькие? Двадцать строк по сто миллионов символов в каждой так и будут двадцатью строками.
часто сталкиваетесь с такими текстовыми файлами?
...
Рейтинг: 0 / 0
Как удалить начальные строки файла?
    #38299783
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
r uphpzДопустим есть текстовой файл и в нем 500 000 строк. Неужели для того, чтобы удалить первые 5 строк, нужно прочитать и записать последующие 499 995, которые вообще не никак не изменяются?
что в вашем понимании УДАЛИТЬ 5 строк?
если просто удалить информацию из строк и записать вместо неё пустые строки - то можно остальные и не перезаписывать.
а если нужно именно удалить, тоесть чтобы первой строкой стала пятая, второй шестая и т.д. то без перезаписи никак.
что есть файл? именованная область памяти. эта область начинается по вполне определенному адресу.
размер может меняться, а начало файла остается неизменным. если меняется адрес начала - то это уже другой файл.

или вы знаете другой способ?
В данном примере удалить строку значит именно удалить и сместить все последующие "вверх", а не как перезаписать строку пустым значением. Я прекрасно понимаю, что тут без перезаписи никак и в своем предыдущем вопросе обратил внимание на резонность построчного чтения всего файла. Как вариант, думаю будет быстрее прочитать первые (N+1)*1024 байт данных в буффер (N кол-во удаляемых строк), вычислить и установить смещение в файле на позицию с которой начинается (N+1) строка, и далее прочитать и записать оставшиеся данные.
...
Рейтинг: 0 / 0
Как удалить начальные строки файла?
    #38299818
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
phpzВ данном примере удалить строку значит именно удалить и сместить все последующие "вверх", а не как перезаписать строку пустым значением. Я прекрасно понимаю, что тут без перезаписи никак и в своем предыдущем вопросе обратил внимание на резонность построчного чтения всего файла. Как вариант, думаю будет быстрее прочитать первые (N+1)*1024 байт данных в буффер (N кол-во удаляемых строк), вычислить и установить смещение в файле на позицию с которой начинается (N+1) строка, и далее прочитать и записать оставшиеся данные.
в целом я согласен. если нужна экстримальная производительность, то конечно лучше заточить решение конкретно под задачу. и все же, построчно работать небудет? будет! остальное уже относится к оптимизации. совершенству нет предела.

но если модно цепляться к словам - то я тоже могу:
-почему именно 1024? у vkle вон в строке по "сто миллионов символов" лежит.
-вычисление смещения, придется делать вручную, а это тоже время.
-остальные N+1 часть файла же все равно придется читать и потом перезаписывать!
-чтоб проверить что быстрее - жду листинга вашего варианта. я свой привел еще вначале.
...
Рейтинг: 0 / 0
Как удалить начальные строки файла?
    #38299854
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uvkleА где видно что файлы маленькие? Двадцать строк по сто миллионов символов в каждой так и будут двадцатью строками.
часто сталкиваетесь с такими текстовыми файлами?Бывает иногда, "всего десяток табличек" в дампе метров эдак на пятьсяот... К счастью, довольно редко :-)
...
Рейтинг: 0 / 0
Как удалить начальные строки файла?
    #38299944
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
r uв целом я согласен. если нужна экстримальная производительность, то конечно лучше заточить решение конкретно под задачу. и все же, построчно работать небудет? будет! остальное уже относится к оптимизации. совершенству нет предела.

но если модно цепляться к словам - то я тоже могу:
-почему именно 1024? у vkle вон в строке по "сто миллионов символов" лежит.
-вычисление смещения, придется делать вручную, а это тоже время.
-остальные N+1 часть файла же все равно придется читать и потом перезаписывать!
-чтоб проверить что быстрее - жду листинга вашего варианта. я свой привел еще вначале.
Ну так это у vkle перевод строки не работает, а в нормальных файлах все строки короче :-) Ну ладно, шутки шутками, а 1024 я по памяти взял: вроде fgets по дефолту 1024 символов или до перевода строки читает. Конец файла конечно читать и потом перезаписывать придется, но только не fgets, а либо блоками или, что еще лучще, за один раз (filesize()-$start_pos). Сравнивайте не ваш код, а вариант построчного чтения всего файла (fgets), о котором мы говорим.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function fslice($fname, $count)
{
	$fh = fopen($fname,"r");
	$head = fread($fh, ($count+1)*1024);
	$length = strlen(implode("\n", array_slice(explode("\n", $head, $count+1), 0, -1)));
	fseek($fh, $length+1, SEEK_SET);
	$content = fread($fh, filesize($fname)-$length-1);
	fclose($fh);
	return $content;
}

file_put_contents('file.txt', fslice("file.txt", 5));
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как удалить начальные строки файла?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]