BusyBox 上的 sed 命令需要不同的语法吗?

BusyBox 上的 sed 命令需要不同的语法吗?

我希望我的问题表述正确。我有一个经常使用“sed”的脚本。它在我的 ubuntu 上使用 GNU“sed”运行良好。但当我尝试在 BusyBox 上运行它时,它失败了。有没有办法在 busybox 上运行 GNU sed?我不是 Linux 专家。

答案1

Busybox本身的实现可能有限sed。您可以将sed二进制文件复制到某个位置,然后直接使用完整路径指向它来调用它。

您可以通过替换 BusyBox 内置sed不支持的转义符来修复一些不兼容问题,例如用 替换\s转义符[[:space:]]将解决空格匹配问题。

答案2

你似乎误解了busybox有效。该工具是一个单一的可执行文件,根据调用它的名称(或子命令)以不同的方式运行。如果您调用sed指向busybox二进制文件(或busybox sed)的符号链接,则会执行“sed”功能。

要将 GNU sed 放入 busybox 环境,您必须删除符号sed链接busybox并提供 GNUsed二进制文件及其依赖的库。您可以使用以下命令识别库ldd

$ ldd /bin/sed
    linux-gate.so.1 =>  (0xb7f78000)
    libselinux.so.1 => /lib/libselinux.so.1 (0xb7f56000)
    libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7e0f000)
    libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7e0a000)
    /lib/ld-linux.so.2 (0xb7f79000)

相关内容