在文件顶部附加一个文本



我想在data.txt文件的顶部添加一个文本,这段代码将文本添加到文件的末尾。如何修改此代码以在data.txt文件顶部写入文本。提前感谢您的帮助。

open (MYFILE, '>>data.txt');
print MYFILE "Titlen";
close (MYFILE)
 perl -pi -e 'print "Titlen" if $. == 1' data.text

您的语法有点偏离已弃用(谢谢,Seth):

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 topn"; # <--- HERE'S THE MAGIC
while( <$in> ) {
    print $out $_;
}
close $out;
close $in;
unlink($file);
rename("$file.new", $file);

(从Perl常见问题解答中免费窃取,然后修改)

这将逐行处理文件,这样在大文件上就不会占用大量内存。但是,它并不完全快。

希望能有所帮助。

有一个简单得多的单行线,可以为每个文件预先准备一块文本。假设您有一组名为body1body2body3等的文件,您希望将名为header的文件中包含的文本块预附加到这些文件:

cat header | perl -0 -i -pe 'BEGIN {$h = <STDIN>}; print $h' body*

追加到顶部通常称为前置。

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

或者打开data.txt进行写入,然后在关闭后将data.txt移动到data.txt,这具有原子性的好处,因此中断不会使data.txt文件被截断。

请参阅此主题的Perl常见问题条目

perl-ni-e'print"Title\n"$==1'文件名,这会打印一次答案

相关内容

最新更新