sed não pegar o texto esperado

0

Estou trabalhando com o ramo do filtro git para uma tarefa específica. Está usando o comando sed. Quando eu uso regex simples tudo está funcionando, mas para algo mais complexo, não é. Talvez eu tenha cometido um engano no regex ou nos personagens que escaparam. Por favor ajude.

git filter-branch -f --msg-filter 'sed -e "s/\[PEM-2233\] Merge branch 'master' of https:\/\/bitbucket\.test\.domain\.com\/rrr\/pem\/hello-world into feature\/PEM-2233-do-acceptance-tests/CHANGED/"' -- --all

A mensagem de confirmação que estou tentando capturar é

[PEM-2233] Merge branch 'master' of https://bitbucket.test.domain.com/rrr/pem/hello-world into feature/PEM-2233-do-acceptance-tests
    
por saferJo 01.11.2017 / 09:48

2 respostas

0

Você não pode aninhar aspas simples. A aspa simples antes de master fechar a string entre aspas, iniciando após --msg-filter .

Como você não pode incluir aspas simples em uma única string entre aspas, é necessário terminar a string e escapar corretamente das aspas:

branch '\'master\'' of http
    
por 01.11.2017 / 09:57
1

O problema são as aspas simples em torno de 'master' . A primeira dessas citações terminará a única string entre aspas que começa com sed -e . As citações em si não serão passadas para sed .

É equivalente ao problema com

$ echo '"hello 'user'"'
"hello user"

Altere a citação para

  • '\'master\'' (a string 'master' será vista como uma string sem aspas pelo shell) ou
  • '"'master'"' (a string 'master' será vista como uma string com aspas duplas pelo shell).

Além disso, para evitar a síndrome do palito inclinado , use outro delimitador para o comando s :

s#...#...#
    
por 01.11.2017 / 10:01

Tags