Надеюсь, я правильно сформулировал вопрос. У меня есть скрипт, который часто использует sed. Он отлично работает на моем Ubuntu с GNU 'Sed'. Но когда я пытаюсь запустить его на BusyBox, происходит сбой. Есть ли способ получить GNU sed на busybox? Я не профессионал в Linux.
2 ответа
Сам Busybox
может иметь ограниченную реализацию sed
. Вы можете скопировать двоичный файл sed
в какое-то место и вызвать его, указав полный путь.
Вы можете исправить некоторые проблемы несовместимости с заменой побегов , что BusyBox BUILTIN sed
не поддерживает, например , замену побега \s
с [[:space:]]
позволит решить проблему космического соответствия.
Вы, кажется, неправильно понимаете, как работает busybox
. Инструмент - это один исполняемый файл, который действует по-разному в зависимости от имени (или подкоманды), с которой он вызывается. Если вы вызываете символическую ссылку sed
указывающую на двоичный файл busybox
(или busybox sed
), будет выполнена функциональность "sed".
Чтобы поместить GNU sed в среду busybox, вы должны удалить символическую ссылку sed
на busybox
и предоставить двоичный файл GNU sed
и библиотеки, от которых он зависит. Вы можете определить библиотеки с помощью команды 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)