\ 1 no comando sed não funciona com xonsh

0

Eu não entendo o que sinto falta aqui:

$ echo 'testing' | sed -E 's/([a-z]*)ing/ing/g'
ing

Espero que a saída seja testing novamente, pois deve ser test ? Essa entrada parece ter sido engolida - ou seja, o grupo correspondeu a ela - mas por que não cuspiu de volta?

Eu estou no macOS 10.12.2; usando o shell xonsh e o GNU sed v4.3.

    
por OJFord 15.01.2017 / 04:27

1 resposta

2

Acontece que o xonsh (ou Python) está engolindo o , então o sed realmente vê 's/([a-z]*)ing/ing/g e sua saída é obviamente correta para essa entrada.

Eu abri um problema aqui sobre isso, mas a solução é usar uma string raw do Python:

$ echo 'testing' | sed -E r's/([a-z]*)ing/ing/g'
testing

Isto é preferível a escapar ( \1 ) já que seria um erro em um shell POSIX em vez de continuar com o indesejado .

No entanto, com agradecimentos a @adqm , aspas duplas e também escape da barra invertida. portável entre xonsh e bash:

$ echo 'testing' | sed -E "s/([a-z]*)ing/ing/g"
    
por 15.01.2017 / 05:14