我希望我的问题表述正确。我有一个经常使用“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)