【问题标题】:Is there something wrong with sed for the mac terminal?mac终端的sed有什么问题吗?
【发布时间】:2013-03-09 16:58:49
【问题描述】:

我无法在我的 mac 终端上运行 sed。我的原始版本是 /usr/bin/sed 我想看看它是什么版本,所以我输入:

sed --version

我得到以下输出:

/usr/bin/sed: 非法选项 -- -- 用法: sed script [-Ealn] [-i 扩展名] [文件 ...] sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]

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

然后我通过从 gnu ftp http://ftp.gnu.org/gnu/sed/ 下载安装到 /usr/local/bin

然后我运行/usr/local/bin/sed --version 并仍然得到与原始版本相同的输出。我完全糊涂了,谁能弄清楚我做错了什么?

编辑:似乎即使 which sed 给了我 /usr/local/bin/sed 命令 sed 仍在运行 /usr/bin/sed,因此 /usr/local/bin/sed 没有被调用。如果我使用完整路径调用它会按预期工作。

我想现在的问题是为什么 which sed 给了我 /usr/local/bin/sed 但是当我键入 sed时命令运行> 是 /usr/bin/sed

【问题讨论】:

    标签: sed


    【解决方案1】:

    您的/usr/bin/sed 是不支持--version 的BSD sed,如您的错误语句所示。它的手册页是 /usr/share/man/man1/sed.1.gz,当我读到根本没有提到版本时,手册页上的日期是 2005 年 5 月 10 日。

    我认为您的手册页不正确。很可能是一个MANPATH,它首先在其他地方寻找。

    至于你所说的/usr/local/bin/sed 为什么是GNU sed 不尊重--version 我不确定。你能提供更多细节吗?

    【讨论】:

    • 谢谢蒂莫西。我刚刚重新启动了我的计算机,它现在可以正常工作了。我不知道 MAC 的 BSD sed 默认值,所以谢谢。我想当我安装 GNU Sed 时,我损坏了一些东西。
    • @mcheema:--version--help 选项适用于使用 GNU getopt_long() 处理选项的 GNU 程序。它们在使用getopt_long() 的程序中几乎是通用的。使用纯 getopt() 的程序不支持这种形式的程序——它涵盖了许多未按照 GNU 编码标准编写的程序。有时,程序接受-V(或-v)打印版本信息;有时,程序接受-h-? 打印帮助。但是,没有强制要求这样做,而且许多人也没有这样做。
    • 感谢@Jonathan Leffler。我主要是一名 R 程序员,但最近在阅读了 Brian Kernighan 的采访后受到了 awk 和 sed 的启发,因为在处理混乱数据的许多用例中,我发现这些工具非常有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    相关资源
    最近更新 更多