Интересно, есть ли эффективный способ удалить первую строку в файле, если она соответствует заданному шаблону.Например, у меня есть файл с данными следующей формы:
Date,Open,High,Low,Close,Volume,Adj.Volume
2012-01-27,42.38,42.95,42.27,42.68,2428000,42.68
2012-01-26,44.27,44.85,42.48,42.66,5785700,42.66
.
.
.
Я хочу удалить первую строку, только если она содержит текст (как показано в примере в первой строке), иоставьте его без изменений, если он содержит только цифры (как в остальных строках).Эта задача довольно проста, и я выполнил ее, применив следующий код, который записывает каждую строку в $newFile
, если она не включает шаблон Date
:
while( <$origFile> )
{
chomp($_);
print $newFile $_ unless ($_ =~ m/Date/g)
}
Я упоминал, что это делает работу.Однако кажется, что чтение каждой строки целого файла - большая трата ресурсов, когда известно, что текст может отображаться только в первой строке.
Есть ли способ выполнить эту задачу более эффективно?
ПРИМЕЧАНИЕ: я уже нашел почти такой же вопрос здесь , но, поскольку я хочу, чтобы мой код был доступен и в Linux и Windows, использование sed
здесь мне не поможет.
Заранее спасибо!