1

間にスペースがある以下のパターンに一致させようとしています。

         -DsomeArg=some value 

sedコマンドを使用して以下のパターンに置き換えます。

         -DsomeArg="some value"

間には任意の数のスペースを含めることができます。以下のコマンドを試しましたが、機能しません。

          sed 's/^\(-D.*\)=(.\+\s\+.\+)/\1="\2"/' test.dat

ここで、。*は。+の代わりに機能しますが、1つ以上のパターンに一致させたいです。私は自分が間違っていることを見つけることができません。

4

2 に答える 2

1
cat /tmp/test | sed -r 's/^(-D.*?)=(.+\s+.+)/\1="\2"/'
-DsomeArg="some value"

それがお役に立てば幸いです:)

于 2013-01-15T19:09:52.187 に答える
0

これはあなたが求めたことを行います:

sed 's/=\(.*\)/="\1"/'

または少し短い:

sed 's/=/="/;s/$/"/'

しかし、私はあなたが言っている以上の話があると感じています。たとえば、引用符の外に残したい「値」の後にテキストが続くことを期待していますか?-DsomeArg一致させたくない何かが先行しますか?

正規表現では、コンテキストがすべてです。

于 2013-01-16T06:29:06.823 に答える