0

sed 中的“N”命令与 Cygwin 的 sed(我认为是 GNU sed)和 AIX 的 sed 的工作方式不同。

$cat > input
Apple
$cat input
Apple
$sed 'N' input
$cat > input
Apple
Orange
$sed 'N' input
Apple
Orange
$

如上所示,第一个sed 'N' input命令没有为 AIX 的 sed 打印任何内容,因为没有新的输入行。然而,Cygwin 的 sed 打印Apple相同。一些 unix/sed 大师可以对此有所了解吗?提前致谢。

4

2 回答 2

1

FWIW,我刚刚发现这里记录了这种行为:http: //sed.sourceforge.net/sedfaq6.html#s6.7.5

于 2012-11-27T13:47:22.600 回答
0

根据 POSIX 标准(我的斜体),看起来 AIX 的行为是正确的:

[2地址] N

将下一行输入(减去其终止 < newline >)附加到模式空间,使用嵌入的 < newline > 将附加材料与原始材料分开。请注意,当前行号会发生变化。

如果没有可用的下一行输入,则 N 命令动词应分支到脚本的末尾并退出,而无需开始新的循环或将模式空间复制到标准输出。

这是来自http://pubs.opengroup.org/onlinepubs/009695399/utilities/sed.html

因此,您可能在 GNU sed 中发现了一个错误(或至少与 POSIX 不符)。

于 2012-11-22T12:45:55.403 回答