Regex для удаления нежелательного текста
Вопрос
Я все еще новичок в целом в целом. Я пытаюсь получить имена из поля, чтобы я мог разделить их для дальнейшего использования (используя интеграцию данных Pentaho данных / чайника для экстракции данных). Вот пример строки, который мне дают:
CN=Name One/OU=Site/O=Domain;CN=Name Two/OU=Site/O=Domain;CN=Name Three/OU=Site/O=Domain
Я хотел бы, чтобы вернулся следующий формат:
Name One;Name Two;Name Three
Чайник использует регулярные выражения Java.
Решение
Это звучит так, как вы хотите заменить и заменить на основе Regex. Как правильно сделать это зависит от вашего языка. Но с седов я бы сделал это так:
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'
Если вы намереваетесь разделить его позже в любом случае, вы, вероятно, хотите просто сопоставить имена и вернуть их IM-петли. Пример кода в 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";
}
Другие советы
Предполагая, что у вас есть в файл.txt:
sed -e 's/\/OU=Site\/O=Domain//g' -e 's/CN=//g' file.txt
Не связан с StackOverflow