2010-12-11 36 views
2

J'ai de nombreux fichiers source Java dont j'ai besoin de modifier leur ligne de package avec une ligne personnalisée en fonction de la structure de répertoire actuelle. Certains de ces fichiers n'ont pas de lignes de paquets, donc je voudrais les remplacer.Utilisation du script linux, comment ajouter ou remplacer une instruction de package dans les fichiers source Java

Dites le fichier source est dans le répertoire dirA et l'en-tête de paquet en cours est package mypackage.myimpl;. Je voudrais le changer en package dirA;. Dans le cas où le fichier source n'avait aucune instruction de paquet, je voudrais ajouter la ligne package dirA;.

Existe-t-il un élégant ou deux-liner dans sed ou awk?

Répondre

3

En supposant que $INFILE est le nom du fichier à modifier basé sur votre "racine du paquet" (par exemple: com.example.foo.Bar doit être appelé com/example/foo/Bar.java) alors cela devrait fais ce que tu veux.

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

Le seul inconvénient est qu'il insère l'instruction package comme première ligne dans le fichier.

+0

Merci cela a bien fonctionné. – Rich