2013-03-09 78 views
0

我在我的mac终端上制作sed工作时遇到了麻烦。原来的版本我是/ usr/bin中/ sed的 我想看看它是什么版本,所以我键入:mac终端的sed有问题吗?

sed --version 

我得到以下输出:

在/ usr/bin中/ sed的:非法选项 - 用法:sed脚本[-Ealn] [-i 扩展名] [文件...] sed [-Ealn] [-i扩展名] [-e脚本] ... [-f script_file] ... [文件...]

我的手册页是sed 4.2,应该有一个--version选项

然后我从GNU FTP下载http://ftp.gnu.org/gnu/sed/

安装到/ usr/local/bin目录我然后运行/usr/local/bin/sed --version,仍然可以得到相同的输出与原始版本。我完全困惑,谁能弄清楚我做错了什么?

编辑:好像即使其中的sed给我在/ usr/local/bin目录/ sed的sed的命令仍在运行在/ usr/bin中/ sed的,因此在/ usr /本地/ bin/sed未被调用。如果我使用完整路径调用,它按预期工作。

我想问题是,为什么现在其中的sed是给我在/ usr/local/bin目录/ sed的尚未运行的命令,当我键入的sed在/ usr/bin中/ sed的

回答

2

您的/usr/bin/sed是BSD sed,它不支持--version,正如您的错误声明所示。它的手册页是/usr/share/man/man1/sed.1.gz,当我看到根本没有提及某个版本,但手册页上的日期是2005年5月10日。

我想你有一个不正确的手册页。最有可能的是MANPATH,它首先在其他地方寻找。

至于为什么/usr/local/bin/sed你说的是GNU sed不兑现--version我不确定。你能提供更多关于这方面的细节吗?

+0

谢谢蒂莫西。我刚刚重新启动了电脑,现在它正常工作。我不知道MAC的BSD sed默认值,所以谢谢。我想当我安装GNU Sed时,我损坏了一些东西。 – mcheema 2013-03-09 17:13:53

+2

@mcheema:'--version'和'--help'选项适用于使用GNU'getopt_long()'处理选项的GNU程序。它们在使用'getopt_long()'的程序中几乎是普遍的。他们不支持这种形式的程序使用普通的'getopt()' - 它涵盖了许多程序没有写入GNU编码标准。有时,程序接受'-V'(或'-v')来打印版本信息;有时,程序会接受'-h'或' - ?'来打印帮助。然而,这样做并不是强制性的,许多不这样做。 – 2013-03-09 17:18:48

+0

谢谢@Jonathan Leffler。我大多是R程序员,但最近在阅读Brian Kernighan采访之后,受到awk和sed粉尘的启发,因为在处理凌乱数据的许多用例中,我发现这些工具非常有用。 – mcheema 2013-03-09 17:30:55