我能找到的每个示例都演示sed
的w
命令在脚本的最后。如果我不能这样做呢?如何让sed'w'命令知道文件名的结尾?
一个例子可能会说明问题更好:
$ echo '123' | sed 'w tempfile; s/[0-9]/\./g'
sed: couldn't open file tempfile; s/[0-9]/\./g: No such file or directory
(如何)我可以改变的上方,使得sed
知道在哪里的文件名结束?
P.S.我知道我可以做
$ echo '123' | sed 'w tempfile
> s/[0-9]/\./g'
...
有更漂亮的选择吗?
P.P.S.人们倾向于建议将其分成两个脚本。问题在于:安全吗?如果我要在w
命令之后的某个地方转移,那么该怎么办?等等。有人可以确认,任何脚本都可以分割成两个后任何命令,那会不会影响结果?
最终编辑:我检查了多个-e
工作只是作为连接命令。我认为它更复杂(就像第一个应该在第二个开始之前总是退出等等)。但是,我试图在两个脚本之间分割一个{..}
命令块,它仍然可以工作,所以w
事情真的不是一个严重的问题。谢谢大家。
为什么不把它分割成多个命令,如'echo'123'| sed -e'w tempfile'-e's/[0-9] /\./ g''。这不是你想要的吗? – Celada
@Celada实际情况更复杂,一切都在递归“标签”内;也许我仍然可以以某种方式分裂它,但它可能是具有挑战性的,而且我不确定它总是可以完成的。 –