在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中,使用由分号分隔的多个命令非常常见: $ 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脚本可以使用分号吗?棘手的一个。。。关于这一点,我能找到的唯一参考资料是 大多数版本的sed允许在服务器上发出多个命令 命令行,用分号(;)分隔
对
的唯一参考代码>不工作适用于HHSED
,请参见GNUsed
似乎允许在MacOS X(BSD)sed
不允许的一些地方使用分号。我现在还不知道细节,但有好几次我不得不修改答案,让它们在Mac上正常工作。该问题可能是由括号括起的命令序列引起的。来自:
除{、a、b、c、i、r、t、w、:和以外的命令动词后面可以跟一个
,
可选的
字符和另一个命令谓词。但是,当s命令谓词与w标志一起使用时,以这种方式跟随另一个命令会产生未定义的结果
因此,除了上面提到的命令外,大多数命令都可以用分号分隔
代码> [[{abcIRTW:Y],[[::Suff:] /<代码>:-)
奇怪的是,命令分隔符在SED(至少GNU)文档中没有记录(而且,不,FAQ我考虑额外的材料,您不需要它来获取全部信息)。。在最小情况下,BSD sed似乎在关闭GNU sed没有关闭的大括号之前坚持最后一个分号。GNU:{n;p}
BSD:{n;p;}