regex لإزالة النص غير المرغوب فيه
سؤال
ما زلت جديدًا من جديد في إعادة 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
لا تنتمي إلى StackOverflow