sed コマンドの \1 が xonsh では機能しません。

sed コマンドの \1 が xonsh では機能しません。

ここで何を見逃しているのか理解できません。

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

出力が元にtesting戻りたいですか?入力が飲み込まれているようです。つまり、グループが一致します。ところで、なぜ吐き出さないのですか?\1test\1

私はxonshシェルとGNU sed v4.3を使用するmacOS 10.12.2を使用しています。

答え1

xonsh(またはPython)がを飲み込んでいることがわかったので、\1sedは実際にこれをチェックし、's/([a-z]*)ing/ing/g出力はもちろんその入力に対して正確です。

私は持っていますここで問題が開かれました。これに対する回避策は、Python raw文字列を使用することです。

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

\\1これは、望ましくない操作を続行するよりも、POSIXシェルでエラーが発生するescaping()よりも望ましいです\1

しかし、@adqm ありがとう、二重引用符およびエスケープされたバックスラッシュはxonshとbashの間で移植可能です。

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

関連情報