在sed中使用分号作为命令分隔符有多方便?

在sed中使用分号作为命令分隔符有多方便?,sed,Sed,在sed中,使用由分号分隔的多个命令非常常见: $ sed -e '/re/{s//replace/p; q;} $sed-e'/re/{s//replace/p;q;} 然而,标准(eg)仅允许 换行符作为分隔符: $ sed -e '/re/{ s//replace/p q } $sed-e'/re/{ s//替换/p Q } 是否有许多常用的sed实现仍然在使用,不允许分号?那么,一个可移植的sed脚本可以使用分号吗?棘手的一个。。。关于这一点,我能找到的唯一参考资料是 大

在sed中,使用由分号分隔的多个命令非常常见:

$ sed -e '/re/{s//replace/p; q;} $sed-e'/re/{s//replace/p;q;} 然而,标准(eg)仅允许 换行符作为分隔符:

$ sed -e '/re/{ s//replace/p q } $sed-e'/re/{ s//替换/p Q }
是否有许多常用的sed实现仍然在使用,不允许分号?那么,一个可移植的sed脚本可以使用分号吗?

棘手的一个。。。关于这一点,我能找到的唯一参考资料是

大多数版本的sed允许在服务器上发出多个命令 命令行,用分号(;)分隔


的唯一参考不工作适用于
HHSED
,请参见GNU
sed
似乎允许在MacOS X(BSD)
sed
不允许的一些地方使用分号。我现在还不知道细节,但有好几次我不得不修改答案,让它们在Mac上正常工作。该问题可能是由括号括起的命令序列引起的。

来自:

{abcirtw以外的命令动词后面可以跟一个
, 可选的
字符和另一个命令谓词。但是,当s命令谓词与w标志一起使用时,以这种方式跟随另一个命令会产生未定义的结果

因此,除了上面提到的命令外,大多数命令都可以用分号分隔


代码> [[{abcIRTW:Y],[[::Suff:] /<代码>:-)

奇怪的是,命令分隔符在SED(至少GNU)文档中没有记录(而且,不,FAQ我考虑额外的材料,您不需要它来获取全部信息)。。在最小情况下,BSD sed似乎在关闭GNU sed没有关闭的大括号之前坚持最后一个分号。GNU:
{n;p}
BSD:
{n;p;}