0

我在一个版权标题是强制性的项目中工作。所有文件都有它们,但最近标题的指南发生了变化,因此需要更新。我在 Linux 平台上工作(但文件也可以通过 Windows 访问)。有些文件有新的标题(但需要在年份字段中更新),有些有旧的标题,有些以非常粗暴的方式不符合标准(是的,他们不幸通过了审查),有些则没有根本没有(是的,这些也通过了审查)。

因此,我提出了三个要求:

  1. 将旧标题更改为更新的标题,以及更新的年份

  2. 对于那些有新标题的人,他们的日期(更准确地说是年份)需要更新。

  3. 将标题添加到没有任何标题的标题

我不想对项目中的所有文件都这样做,只对我为修复而更改的文件执行此操作。换句话说,只有文件显示在 git status 的输出中。更新日期时可能出现的情况是:

  1. 2011-2014, 2016 ==> 2012-2014,2016-2017
  2. 2011-2012, 2014-2015 ==> 2011-2012, 2014-2015, 2017
  3. 2011-2016 ==> 2012-2017
  4. 2011-2017 ==> 没有变化

它也是项目中的 .java、.cpp、.c、.h 和 .xml 文件。

我看到了这个,但它似乎只添加了标题。我对sed和awk不太精通。我经历了这个,但它假设所有文件的标准开始,但这也涉及一个公共标题。是否有可能做到这一点 ?

编辑:我接受了@Hoall 的回答并手动完成,因为现在使用 sed 似乎太麻烦了!

4

1 回答 1

1

在linux下你可以这样做:

for i in `git diff --name-only --cached`; do echo $i; done

将 echo 命令替换为 sed、awk 左右来替换文件中的完整标题。

编辑:

对于 sed 部分,请参见sed:替换文本块

于 2017-06-26T14:13:51.707 回答