【发布时间】:2012-06-24 21:47:46
【问题描述】:
我能找到的每个演示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 知道文件名的结尾吗?
附:我知道我可以做到
$ echo '123' | sed 'w tempfile
> s/[0-9]/\./g'
...
有更漂亮的选择吗?
附言人们倾向于建议将其拆分为两个脚本。那么问题来了:它安全吗?如果我要在 w 命令之后的某个地方分支,等等。有人可以确认 any 脚本可以在 any 命令之后一分为二并且不会影响结果吗?
最终编辑:我检查了多个 -e 是否可以像串联命令一样工作。我认为它更复杂(比如第一个应该总是在第二个开始之前退出,等等)。但是,我尝试在两个脚本之间拆分 {..} 的命令块,它仍然有效,所以 w 的事情真的不是一个严重的问题。谢谢大家。
【问题讨论】:
-
你为什么不把它拆分成多个命令,比如
echo '123' | sed -e 'w tempfile' -e 's/[0-9]/\./g'。这不是你想要的吗? -
@Celada 实际情况更复杂,一切都在递归“标签”内;也许我仍然可以以某种方式拆分它,但这可能具有挑战性,而且我不确定它是否总是可以完成。