微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在文件顶部附加一个文本

如何解决在文件顶部附加一个文本

| 我想在data.txt文件的顶部添加文本,此代码文件末尾添加文本。如何修改代码以将文本写在data.txt文件顶部。在此先感谢您的协助。
open (MYFILE,\'>>data.txt\');
print MYFILE \"Title\\n\";
close (MYFILE)
    

解决方法

 perl -pi -e \'print \"Title\\n\" 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 top\\n\"; # <--- HERE\'S THE MAGIC

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

unlink($file);
rename(\"$file.new\",$file);
(从Perl常见问题解答中被盗,然后进行了修改) 这将逐行处理文件,以便在大型文件上不会占用大量内存。但是,这并不完全很快。 希望能有所帮助。     ,有一个简单得多的单行代码,可在每个文件之前添加一块文本。假设您有一组名为body1,body2,body3等的文件,要在其中添加一个名为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 \"foo\\n\";
print M @m;
close(M);
交替打开data.txt-进行写入,然后在关闭后将data.txt-移至data.txt,这具有原子性的优势,因此中断不会使data.txt文件被截断。     ,请参阅有关此主题的Perl FAQ条目     ,perl -ni -e \'print \“ Title \\ n \” $。== 1 \'filename,这一次打印答案     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。