Используя скрипт Linux, как добавить или заменить выражение пакета в исходных файлах Java - PullRequest
2 голосов
/ 12 декабря 2010

У меня есть много исходных файлов Java, которые мне нужно изменить в строке пакета на свой, в зависимости от текущей структуры каталогов. Некоторые из этих файлов не имеют строк пакета, поэтому я хотел бы заменить их.

Скажите, что исходный файл находится в каталоге dirA, а заголовок текущего пакета - package mypackage.myimpl;. Я хотел бы изменить его на package dirA;. В случае, когда в исходном файле вообще не было оператора пакета, я хотел бы добавить строку package dirA;.

Есть ли элегантный одно- или двухслойный в sed или awk?

1 Ответ

3 голосов
/ 12 декабря 2010

Предполагается, что $INFILE - это имя файла, который нужно изменить, исходя из вашего "корня пакета" (то есть: com.example.foo.Bar должен называться com / example / foo / Bar.java), тогда этоследует делать то, что вы хотите.

sed -i -e '/^package /d' -e '1,1 i package '"$(dirname "$INFILE" | sed -e 's:/:.:g');" $INFILE

Одно большое предостережение заключается в том, что он вставляет инструкцию пакета в качестве первой строки в файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...