2013-07-10 102 views
0

我有我的Java文件的许可证文本,以取代一个段落。我想用另一个许可证替换它。我有大量的java文件来做到这一点。我怎样才能通过使用“sed”命令或bash脚本?如何使用sed命令

原证的样子,

 
/* 
* some txt 
* some txt 
*/ 

package abc; 

而且我想,以取代上述许可文本之后,

 
/* 
* new license 
* new license 
*/ 

package abc; 
+1

类似的问题已经问。这可能会帮助你。 http://stackoverflow.com/questions/8454525/how-to-substitute-a-paragraph-in-file – Agnivesh

+0

我会使用一个补丁文件,可能带有模糊匹配止跌回升。 – ams

+0

类似的XML [问题](http://stackoverflow.com/q/17213944/2098699)。 – Endoro

回答

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 
1

您仅限于sedawk,等?这将是更容易做到这一点在Perl:

perl -e 'undef $/; 
    $_=<>; 
    s|(/\*\n)[\s\S]*(\*/\s*package)|$1 * new license\n * new license\n$2|; 
    print' in.txt