Skip to content

Sed 环境

本章介绍如何确保你的系统上可以使用 sed。sed(流编辑器,Stream EDitor 的缩写)几乎是所有类 Unix 操作系统(包括 GNU/Linux 和 macOS)的标准实用工具。

通常,sed 已经预安装。你可以通过检查其版本来验证它的存在:

$ sed --version

如果 sed 已安装,你会看到类似于以下的输出(版本号和版权年份可能会有所不同):

sed (GNU sed) 4.8
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <https://www.gnu.org/software/sed/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-sed@gnu.org>.
Be sure to include the word "sed" somewhere in the "Subject:" field.

如果你收到诸如“command not found”(命令未找到)的错误,则可能需要安装它。

在大多数现代 Linux 发行版上,sed 是核心工具(core utilities)的一部分,应该已经存在。如果由于某种原因它缺失了,你可以使用你的发行版的包管理器进行安装。

对于基于 Debian 的系统(如 Ubuntu、Mint):

$ sudo apt update
$ sudo apt install sed

对于基于 RHEL 的系统(如 Fedora、CentOS、AlmaLinux): 现代版本使用 dnf:

$ sudo dnf install sed

较旧版本可能使用 yum:

$ sudo yum install sed

对于 macOS: macOS 自带一个 BSD 版本的 sed。如果你需要 GNU sed 及其扩展功能(例如无需强制后缀的 -i 选项,或更高级的正则表达式),可以通过 Homebrew 进行安装:

$ brew install gnu-sed

通过 Homebrew 安装后,GNU sed 通常以 gsed 的名称提供。如果你想使用 sed 来调用 GNU sed,可能需要将其添加到你的 PATH 环境变量中或创建一个别名。

在完成任何安装后,通过运行 sed --version(或者如果你在 macOS 上安装了 GNU sed,则运行 gsed --version)来验证安装。

通常情况下,对于 sed 而言,从源代码安装不是必需的,除非你有非常特定的需求或者正在开发 sed 本身。操作系统包管理器提供的版本通常已经足够并且集成良好。

如果你仍然希望从源代码编译(例如,为了获取最新的版本):

  • **下载源代码:**访问GNU sed 官方网站查找最新稳定版源代码压缩包(tarball,例如 sed-X.Y.Z.tar.gz)的链接。
  • 使用 wget 或 curl 下载。将 X.Y.Z 替换为当前版本号。
  • $ wget https://ftp.gnu.org/gnu/sed/sed-X.Y.Z.tar.gz
  • 解压并提取:
  • $ tar -xzvf sed-X.Y.Z.tar.gz
  • 进入目录:
  • $ cd sed-X.Y.Z
  • 配置构建:
  • $ ./configure
  • 此步骤检查你的系统是否具备必要的依赖项并准备构建文件。如果它报告缺失依赖项,你需要使用你的包管理器安装它们。
  • 编译源代码:
  • $ make
  • 运行测试(可选但推荐):
  • $ make check
  • **安装编译后的二进制文件:**这通常需要超级用户权限。
  • $ sudo make install

安装完成后,通过运行 sed --version 进行验证。请注意,从源代码安装可能会将二进制文件放置在 /usr/local/bin/sed 中,这可能会根据你的 PATH 配置优先于系统 /bin/sed 或 /usr/bin/sed。