不要なテキストを削除するための正規表現
質問
私はまだ正規表現全般に慣れています。フィールドから名前を取得して、さらに使用するためにそれらを分割できるようにしようとしています(データ抽出のために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
所属していません StackOverflow