からオプション値を抽出:のは、私は、文字列を持っているとしましょう、だから、文字列
aaa -Dprop=var Class arg
aaa Class arg
私はarg
とvar
を抽出することができ、単一のワンライナー(perlの、sedは、awkは、重要ではありません)をしたいです(もしあれば)。具体的には、私は最初のもののために
arg var
arg
次作品を返却したいと思います:-Dprop=
が必要とされているため
echo "aaa -Dprop=var Class arg" | perl -pe 's|.*(-Dprop=([a-z]*)).*Class (.*)|\3 \2|'
しかし、それは明らかに二番目に動作しません。
、しかし、私はオプションに一致させる場合は、次の、私は2つを信じているから
echo "aaa -Dprop=var Class arg" | perl -pe 's|.*(-Dprop=([a-z]*))?.*?Class (.*)|\3 \2|'
それは最初のもののために動作しません* sが貪欲修飾子であり、最初の-Dpropと一致します。
私はそれらを貪欲でないものにしても、まだ動作しませんが、私はなぜそれがわかりません。
echo "aaa -Dprop=var Class arg" | perl -pe 's|.*?(-Dprop=([a-z]*))?.*?Class (.*)|\3 \2|'
まず、どの正規表現を使用すれば正しく一致させることができますか? (私は複数のコマンドに分割することができますが、むしろ1つしか持たない)。おそらく、
1うわー、実際に投稿する前に、いくつかのコードを記述しようとした人! ;-) がんばろう。 – shellter
"-Dprop ="は固定されているか、何か "foo = yourVar"でもかまいませんか? – Kent
@Kent、-Dpropは固定されていますが、varは何でも構いませんが(特定の形式で) –