Para substituir os caracteres entre @
e #
com my/branch
, use o seguinte:
$ sed -e 's!@[^@]*#!@my/branch#!' foo.txt
-e [email protected]:acme-inc/repo0.git@my/branch#egg=repo0
-e [email protected]:acme-inc/repo1.git@my/branch#egg=repo1
-e [email protected]:acme-inc/repo2.git@my/branch#egg=repo2
Observação: o [^@]*
garante que você corresponda ao @
mais próximo e não ao primeiro.
Como suas necessidades exatas não são claras, suponho que você queira trocar master
por my\branch
.
As substituições em sed
são delimitadas pelo primeiro caractere após s
. Usar um caractere que não ocorra em sua string (como !
) pode ser mais fácil de seguir.
$ sed -e 's!master!my/branch!' foo.txt
-e [email protected]:acme-inc/repo0.git@my/branch#egg=repo0
-e [email protected]:acme-inc/repo1.git@my/branch#egg=repo1
-e [email protected]:acme-inc/repo2.git@my/branch#egg=repo2
Como alternativa, você pode escapar da barra \/
para que sed
não tente delimitá-la.
$ sed -e 's/master/my\/branch/' foo.txt
-e [email protected]:acme-inc/repo0.git@my/branch#egg=repo0
-e [email protected]:acme-inc/repo1.git@my/branch#egg=repo1
-e [email protected]:acme-inc/repo2.git@my/branch#egg=repo2