REGEX Unerwünschten Text entfernen
Frage
Ich bin immer noch neue Art von allgemein RegEx. Ich versuche, die Namen aus einem Feld abzurufen, damit ich sie zur weiteren Verwendung (mit Pentaho Data Integration / Kessel für die Datenextraktion) aufspalten. Hier ist ein Beispiel für die Zeichenfolge mir gegeben habe:
CN=Name One/OU=Site/O=Domain;CN=Name Two/OU=Site/O=Domain;CN=Name Three/OU=Site/O=Domain
Ich möchte das folgende Format haben zurückgegeben:
Name One;Name Two;Name Three
Kessel verwendet Java Regular Expressions.
Lösung
Das klingt wie Sie wollen Ersatz & Replace auf einem regex basiert. Wie zu tun richtig, dass auf Ihrer Sprache abhängt. Aber mit sed würde ich es tun, wie folgt:
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'
Wenn Sie beabsichtigen, es zu spalten später sowieso, wollen Sie wahrscheinlich nur die Namen übereinstimmen und bringt sie eine Schleife im. Beispielcode in 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";
}
Andere Tipps
vorausgesetzt, Sie es in datei.txt haben:
sed -e 's/\/OU=Site\/O=Domain//g' -e 's/CN=//g' file.txt