質問

私はまだ正規表現全般に慣れています。フィールドから名前を取得して、さらに使用するためにそれらを分割できるようにしようとしています(データ抽出のためにPentaho Data Integration/Kettleを使用)。これが私に与えられた文字列の例です:

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の正規表現を使用します。

役に立ちましたか?

解決

それはあなたが正規表現に基づいて代替と交換を望んでいるように聞こえます。それを正しく行う方法はあなたの言語によって異なります。しかし、SEDでは私はこのようにそれをするでしょう:

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'

とにかく後でそれを分割するつもりなら、おそらく名前を一致させて、それらをループに返したいと思うでしょう。 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";
}

他のヒント

file.txtに持っていると仮定します:

sed -e  's/\/OU=Site\/O=Domain//g' -e 's/CN=//g' file.txt
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top