2013-07-10 5 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

Вы ограничены sed, awk и др.? Было бы проще сделать это в Perl:

perl -e 'undef $/; 
    $_=<>; 
    s|(/\*\n)[\s\S]*(\*/\s*package)|$1 * new license\n * new license\n$2|; 
    print' in.txt 
Смежные вопросы