سؤال

ما زلت جديدًا من جديد في إعادة 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

يستخدم Kettle تعبيرات 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'

إذا كنت تنوي تقسيمها لاحقًا على أي حال ، فربما تريد فقط مطابقة الأسماء وإعادتها أنا حلقة. رمز مثال في بيرل:

#!/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";
}

نصائح أخرى

على افتراض أن لديك في file.txt:

sed -e  's/\/OU=Site\/O=Domain//g' -e 's/CN=//g' file.txt
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top