добавить текст в верхней части файла - PullRequest
8 голосов
/ 26 мая 2011

Я хочу добавить текст в начало моего файла data.txt, этот код добавить текст в конец файла.как я могу изменить этот код, чтобы написать текст в верхней части моего файла data.txt.заранее спасибо за любую помощь.

open (MYFILE, '>>data.txt');
print MYFILE "Title\n";
close (MYFILE)

Ответы [ 6 ]

9 голосов
/ 27 мая 2011
 perl -pi -e 'print "Title\n" if $. == 1' data.text
8 голосов
/ 26 мая 2011

Ваш синтаксис слегка отключен устарел (спасибо, Сет):

open(MYFILE, '>>', "data.txt") or die $!;

Вам придется сделать полный проход через файл и записать нужные данные до того, как существующиесодержимое файла:

open my $in,  '<',  $file      or die "Can't read old file: $!";
open my $out, '>', "$file.new" or die "Can't write new file: $!";

print $out "# Add this line to the top\n"; # <--- HERE'S THE MAGIC

while( <$in> ) {
    print $out $_;
}
close $out;
close $in;

unlink($file);
rename("$file.new", $file);

(безвозмездно украдено из Perl FAQ , затем изменено)

Это будет обрабатывать файл построчно, так что в больших файлахты не жуешь тонны памяти.Но это не совсем быстро.

Надеюсь, это поможет.

7 голосов
/ 30 июня 2012

Существует гораздо более простая однострочная строка для добавления блока текста к каждому файлу. Допустим, у вас есть набор файлов с именами body1 , body2 , body3 и т. Д., К которым вы хотите добавить блок текста, содержащийся в файле заголовок

cat header | perl -0 -i -pe 'BEGIN {$h = <STDIN>}; print $h' body*
2 голосов
/ 26 мая 2011

См. Perl FAQ Entry по этой теме

2 голосов
/ 26 мая 2011

Добавление к вершине обычно называется предварительным.

open(M,"<","data.txt");
@m = <M>;
close(M);
open(M,">","data.txt");
print M "foo\n";
print M @m;
close(M);

Поочередно открывайте data.txt- для записи, а затем перемещайте data.txt- в data.txt после закрытия, что дает преимуществоатомарный, поэтому прерывания не могут оставить файл data.txt урезанным.

0 голосов
/ 27 сентября 2012

perl -ni -e 'напечатать "Заголовок \ n" $. == 1' имя файла, это напечатает ответ один раз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...