RegEx rimuovere testo indesiderato
Domanda
Sono ancora un po 'di nuovo da RegEx in generale. Sto cercando di recuperare i nomi da un campo in modo che io possa dividere per un ulteriore uso (usando Pentaho Data Integration / bollitore per l'estrazione dei dati). Ecco un esempio della stringa che sto dato:
CN=Name One/OU=Site/O=Domain;CN=Name Two/OU=Site/O=Domain;CN=Name Three/OU=Site/O=Domain
mi piacerebbe avere il seguente formato restituito:
Name One;Name Two;Name Three
Kettle utilizza Java espressioni regolari.
Soluzione
sostituto e che suona come si desidera replace basa su una regex. Come fare correttamente che dipende dalla vostra lingua. Ma con sed lo farei in questo modo:
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'
Se avete intenzione di dividere in un secondo momento in ogni caso, probabilmente si vuole abbinare solo i nomi e restituire loro im un ciclo. Esempio di codice 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";
}
Altri suggerimenti
a patto di avere in file.txt:
sed -e 's/\/OU=Site\/O=Domain//g' -e 's/CN=//g' file.txt