Question

Je suis confié la tâche de marque blanche une application pour qu'elle ne contient aucune référence à notre société, site web, etc. Le problème que je suis en cours d'exécution en est que j'ai beaucoup de différents modèles à rechercher et voudrais garantir que tous les modèles sont enlevé. Depuis l'application n'a pas été développée en interne (entièrement) nous ne pouvons pas simplement regarder les occurrences dans messages.properties et faire. Nous devons passer par des JSP, le code Java et XML.

J'utilise grep pour filtrer les résultats comme celui-ci:

grep SOME_PATTERN . -ir | grep -v import | grep -v // | grep -v /* ...

Les motifs sont échappés quand je les utiliser sur la ligne de commande; cependant, je ne pense pas que ce filtrage est très robuste. Il pourrait y avoir des événements qui ont l'importation dans les (peu probable) ou même / * (le début d'un commentaire javadoc).

Toute la production de texte à l'écran doit provenir d'une déclaration de chaîne quelque part ou un fichier de constantes. Donc, je peux supposer que je trouverai quelque chose comme:

public static final String SOME_CONSTANT = "SOME_PATTERN is currently unavailable";

Je voudrais trouver cet événement, ainsi que:

public static final String SOME_CONSTANT = "
SOME_PATTERN blah blah blah";

Par ailleurs, si nous avions un des tests sur chenilles interne / automatique, je ne pouvais tout simplement retirer le xhtml de chaque page et vérifiez la source pour assurer qu'il était propre.

Était-ce utile?

La solution

J'utiliser sed , pas grep ! Sed est utilisé pour effectuer des transformations de texte de base sur un flux d'entrée. Essayez l'option s/regexp/replacement/ avec la commande sed.

Vous pouvez également essayer awk commande . Il a une option -F pour les champs de séparation, vous pouvez l'utiliser avec pour séparer les lignes de fichiers vous avec ;.

La meilleure solution sera cependant un script simple Perl ou Python .

Autres conseils

Pour répondre à votre préoccupation de manquer certains événements, pourquoi ne pas filtrer progressivement:

  1. Créez un fichier texte avec possible matchs en tant que point de départ.
  2. Utiliser un filtre X (grep pour '@import', par exemple) pour vider fausse probable positifs dans un fichier tmp.
  3. Utiliser un filtre X pour enlever les résultats de votre fichier de travail (un copie de [1]).
  4. Faites une passe visuelle rapide du tmp déposer et ajouter des vrais matchs retour dans.
  5. Répéter [2] -. [4] avec d'autres filtres

Cela peut prendre un certain temps, bien sûr, mais il ne semble pas que c'est quelque chose que vous voulez vous méprenez pas ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top