0

我的 Java 文件中有许可证文本。我想用另一个许可证替换它。我有很多 java 文件可以做到这一点。如何使用“sed”命令或 bash 脚本来做到这一点?

原始许可证看起来像,

/*
 *一些txt
 *一些txt
*/

包 abc;

我想将上面的许可证文本替换为以下内容,

/*
 * 新许可证
 * 新许可证
*/

包 abc;
4

2 回答 2

2

像这样的东西会这样做...确保您首先测试而不使用 -i 标志,否则请确保您最近备份了与您的查找模式匹配的任何文件。

for file in $(find /path -type f -name "*.jar" -exec egrep 'old license text' \;)
do
  sed -ri 's/old license text/new license text/g' ${file}
done
于 2013-07-10T17:18:21.790 回答
1

您是否仅限于sed, awk, 等?在 Perl 中这样做会更容易:

perl -e 'undef $/;
  $_=<>;
  s|(/\*\n)[\s\S]*(\*/\s*package)|$1 * new license\n * new license\n$2|;
  print' in.txt
于 2013-07-10T10:51:27.540 回答