脚本替换文件的第一行,如果它'T匹配某个模式

时间:2011-12-07 20:56:32

标签: python ruby perl sed

我想在所有没有的文件中添加一些许可文本 许可证。所以,我想检查文件的第一行,如果没有 在其中包含文本“#region License”,以插入一些文本。感谢。

3 个答案:

答案 0 :(得分:3)

以下单行将在尚未以该文本开头的第一行文件中插入文本#region License

perl -i.bckp -ne 'print && next if $. > 1;/^#region License/?print:print"#region License\n$_"' filename.txt

它还会制作文件扩展名为.bckp的备份文件。

答案 1 :(得分:0)

这可能对您有用:

 sed -i -e '1{/#region License/!i\some text' -e '}' file1 file2 file....

答案 2 :(得分:0)

嗯......好吧,单线对我来说有点太聪明了。通常你可以尝试这样的事情:

foreach(glob('my/files-*.dat')) 
{
   open IFH,'<',$);
   my $rec = <IFH>;
   if($rec =~ m/#region License/)
    {
        close IFH;
        next;
   }

    open OFH,'>',"$_.tmp";
    print OFH "#region License .....\n";
    print OFH $rec;
    print OFH <IFH>;
    close IFH;
    close OFH;  
    unlink $_;
    rename $_.tmp $_;
}