1

私はまだ正規表現全般に慣れていません。フィールドから名前を取得して、さらに使用するために分割できるようにしようとしています (データ抽出には 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

Kettle は Java 正規表現を使用します。

4

2 に答える 2

1

正規表現に基づいて代用と置換が必要なようです。それを正しく行う方法は、言語によって異なります。しかし、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";
}
于 2010-09-10T14:14:08.163 に答える
0

file.txtにあると仮定します:

sed -e  's/\/OU=Site\/O=Domain//g' -e 's/CN=//g' file.txt
于 2010-09-10T14:05:41.813 に答える