Надеюсь, я правильно сформулировал вопрос. У меня есть скрипт, который часто использует 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)
