Regex pour supprimer le texte non désiré
Question
Je suis encore un peu nouveau pour RegEx en général. Je suis en train de récupérer les noms d'un champ pour que je puisse les séparer pour une utilisation ultérieure (en utilisant l'intégration / bouilloire Pentaho Data pour l'extraction de données). Voici un exemple de la chaîne on me donne:
CN=Name One/OU=Site/O=Domain;CN=Name Two/OU=Site/O=Domain;CN=Name Three/OU=Site/O=Domain
Je voudrais avoir le format suivant retourné:
Name One;Name Two;Name Three
Kettle utilise Java expressions régulières.
La solution
Cela sonne comme vous voulez remplacer et remplaçons basé sur une expression régulière. Comment faire correctement cela dépend de votre langue. Mais avec sed je le ferais comme ceci:
echo "CN=Name One/OU=Site/O=Domain;CN=Name Two/OU=Site/O=Domain;CN=Name Three/OU=Site/O=Domain" |\
sed 's/CN=\([^\/]*\)[^;]*/\1/g'
Si vous avez l'intention de le diviser plus tard de toute façon, vous voulez probablement correspondre juste les noms et les retourner im une boucle. Exemple de code dans perl:
#!/usr/bin/perl
$line="CN=Name One/OU=Site/O=Domain;CN=Name Two/OU=Site/O=Domain;CN=Name Three/OU=Site/O=Domain";
for $match ($line =~ /CN=([^\/]*)/g ){
print "Name: $match\n";
}
Autres conseils
en supposant que vous avez dans fichier.txt:
sed -e 's/\/OU=Site\/O=Domain//g' -e 's/CN=//g' file.txt