Forum Webscript.Ru

Программирование => Perl => Тема начата: Yaroslav от 01 Апреля 2001, 23:59:48

Название: Как удалить строку из файла
Отправлено: Yaroslav от 01 Апреля 2001, 23:59:48
Как удалить строку ( например №3) из файла
если можно примерчик плз..
Название: Как удалить строку из файла
Отправлено: frg от 02 Апреля 2001, 06:04:31
Закачиваешь содержимое файла в массив (@aa), передаешь cодержимое массива в другой массив (@bb),ведешь счетчик строк, если номер строки (@aa) равен 3, то пропускаешь ее. Вот и все. А потом очищаешь содержимое предыдущего файла и закачиваешь в него содержимое @bb.
Название: Как удалить строку из файла
Отправлено: Chs от 02 Апреля 2001, 07:12:37
Цитировать
frg (02-04-2001 07:04):
Закачиваешь содержимое файла в массив (@aa), передаешь cодержимое массива в другой массив (@bb),ведешь счетчик строк, если номер строки (@aa) равен 3, то пропускаешь ее. Вот и все. А потом очищаешь содержимое предыдущего файла и закачиваешь в него содержимое @bb.
А с использованием одного массива, слабо?
:)
Название: Как удалить строку из файла
Отправлено: Yaroslav от 02 Апреля 2001, 09:33:01
Теорию я знаю, примерчик мне бы..........
Название: Как удалить строку из файла
Отправлено: frg от 02 Апреля 2001, 09:39:55
Можно и так
#!/usr/local/bin/perl

open (FILE,"tt.txt");
@LINES=;
close(FILE);

$le=$#LINES-1;

open(DATA,"+print DATA @LINES[0,1,3..$le];
close(DATA);
Название: Как удалить строку из файла
Отправлено: Yaroslav от 02 Апреля 2001, 10:01:27
А что нибудь полегче (ведь в этом случае мне надо знать сколько у меня строк, а их кол-во переменчиво)
Название: Как удалить строку из файла
Отправлено: frg от 02 Апреля 2001, 10:13:38
Ты бы объяснил конкретнее..
Название: Как удалить строку из файла
Отправлено: Yaroslav от 02 Апреля 2001, 10:32:07
Это должен быть форум (приблизительно как этот) и в нем можно будет изменять вопрос и т.к. я знаю как можно добавить запись я не спрашиваю как заменить строку на строку, а спрашиваю как удалить.
Название: Как удалить строку из файла
Отправлено: lodevar от 02 Апреля 2001, 11:13:07
Если форум, то почему бы не в базах его расписать? Зачем на файликах его делать?
Название: Как удалить строку из файла
Отправлено: Yaroslav от 02 Апреля 2001, 11:20:14
Как уже сделал (я же только учусь)
Название: Как удалить строку из файла
Отправлено: lodevar от 02 Апреля 2001, 14:38:20
Можно и так:

$deleted_line=3;
open(FILE,"text.txt");
$i=1;
while()
{
 if($i != $deleted_line)
 {
  @array[$i]=$_;
 }
 $i++;
}
close(FILE);
open(FILE,">text.txt");
foreach $line (@array)
{
 print FILE $line;
}
close(FILE);
Название: Как удалить строку из файла
Отправлено: Yaroslav от 02 Апреля 2001, 21:02:18
Этот вариант почему-то не работает
Название: Как удалить строку из файла
Отправлено: от 02 Апреля 2001, 22:00:16
Кстати проверил ради интереса. Работает как часы.
Название: Как удалить строку из файла
Отправлено: lodevar от 03 Апреля 2001, 09:05:22
Цитировать
Yaroslav (02-04-2001 22:02):
Этот вариант почему-то не работает
Давай разберемся почему. У тебя в локале не работает, или в нет закачал и там не пашет? Какую ошибку выдает? Или он работает не так, как ты ожидал от него... ;-)
Название: Как удалить строку из файла
Отправлено: от 03 Апреля 2001, 11:06:05
У него уже все работает :)
Он вчера меня в IRCe нашел ;)
Название: Как удалить строку из файла
Отправлено: Ilya от 05 Апреля 2001, 18:48:37
Вот так делал я:

$strokdel = "Эсли строка в файле содержит этот текст, то она будет удалена";

open(FILE, "file.txt");#Открываем файл
@file=;# Присваеваем содержимое масиву
close(FILE);# Закрываем файл
$t=@file; # Определяем кол-во строк в масиве (файле)
for ($i=0;$i<=$t;$i++) # Понимаю, но сказать не могу
{if( $file[$i] == $strtodel ) # Если в масиве строка равна переменной $strodel
{$file[$i]=~s/$strtodel//;} # То заменяем ее на пустую строку
}
open(FILE, ">$file");# Открываем файл
print FILE @file;# Пишем измененный масив в файл
close(FILE); # Закрываем файл

Сам парился долго, пока NAS не подсказал!
Название: Как удалить строку из файла
Отправлено: lodevar от 06 Апреля 2001, 12:01:37
Ну и для совсем извращенных еще пример - один массив, одно открытие файла:
$search_line="delete me!";
$offset=0;
open(FILE,"+@dat=;
foreach $line (@dat)
{
  $line1=$line;
  chomp $line1;
  if($line1 eq $search_line)
  {
   splice @dat,$offset,1;
  }
  $offset++;
}
seek(FILE,0,0);
print FILE @dat;
truncate(FILE,tell(FILE));
Название: Как удалить строку из файла
Отправлено: AliMamed от 06 Апреля 2001, 13:03:59
эээ close не надо?
Название: Как удалить строку из файла
Отправлено: lodevar от 06 Апреля 2001, 13:09:56
Цитировать
AliMamed (06-04-2001 13:03):
эээ close не надо?
Вобщем-то надо. Но если уж так, то flock тоже надо. ;-)