Pregunta

Todavía estoy especie de nuevo a expresiones regulares en general. Estoy tratando de recuperar los nombres de un campo para que pueda dividir para su uso posterior (utilizando Pentaho Data Integration / Caldera para la extracción de datos). He aquí un ejemplo de la cadena que me dan:

CN=Name One/OU=Site/O=Domain;CN=Name Two/OU=Site/O=Domain;CN=Name Three/OU=Site/O=Domain

Me gustaría tener el siguiente formato devuelto:

Name One;Name Two;Name Three

Caldera utiliza Java expresiones regulares.

¿Fue útil?

Solución

Eso suena como que quieren sustituir y reemplazar basa en una expresión regular. Cómo hacer correctamente, eso depende de su idioma. Pero con sed lo haría así:

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 usted tiene la intención de dividir más tarde de todos modos, es probable que desee simplemente coincidir con los nombres y devolverlos im un bucle. Ejemplo de código en 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";
}

Otros consejos

suponiendo que tiene en archivo.txt:

sed -e  's/\/OU=Site\/O=Domain//g' -e 's/CN=//g' file.txt
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top