Commande Unix sed pour rechercher et remplacer un motif

J’essaie de faire correspondre le modèle ci-dessous qui a des espaces entre les deux.

-DsomeArg=some value 

et pour le remplacer par le modèle ci-dessous en utilisant la commande sed.

  -DsomeArg="some value" 

Il peut y avoir n’importe quel nombre d’espaces entre les deux. J’ai essayé ci-dessous la commande mais sa ne fonctionne pas.

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

où as. * fonctionne au lieu de. +, mais je veux correspondre à un ou plusieurs motifs. Je ne suis pas capable de trouver ce que je fais mal. Sil te plait aide moi.

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

J’espère que ça va aider 🙂

Cela fait ce que vous avez demandé:

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

ou un peu plus court:

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

Mais j’ai le sentiment qu’il y a plus dans l’histoire que vous ne le dites. Par exemple, vous attendez-vous à ce que du texte suive “une certaine valeur” que vous souhaitez laisser en dehors des guillemets? Est-ce que quelque chose précède -DsomeArg que vous ne voulez pas faire correspondre?

Avec les expressions régulières, le contexte est tout.