有没有办法将SED s ///命令的反向引用发送到管道?要从文本中获取条目,请更改它,然后将其写回 . 我发现SED中的替换有效:
$ echo 'Test ....' | sed 's/Test/'$( echo "<\0>" )'/'
<Test> ....
但第一个管道没有:
$ echo 'Test ....' | sed 's/Test/'$( echo "<\0>" | tr 's' 'x' )'/'
<Test> ....
是什么原因?另外,我无法理解为什么这个有用 . 我认为应该在sed之前处理$()替换(因为我打破了引号) .
如何使用sed将一个s ///命令插入另一个命令?我用bash .
2 回答
tr
命令在文本"<\0>"上运行,而不在"<Test>"上运行 . 在管道完成之前,后向引用不会在sed
中展开 . 你的第二个例子相当于这里看起来更容易
tr
无法在输入中看到"Test" .使用GNU sed和
e
标志可以达到效果:输出: