私は質問を正しく表現したと思います。 'sed'を多用するスクリプトがあります。 GNU 'sed'を使用すると、ubuntuでうまく機能します。しかし、BusyBoxで実行しようとすると、失敗します。GNUを取得する方法はありますか? = busyboxでsed?私はLinuxのプロではありません。
Busybox
自体は、sed
の実装が制限されている可能性があります。 sed
バイナリをある場所にコピーして、フルパスで直接ポイントして呼び出すことができます。
BusyBoxの組み込みsed
がサポートしていないエスケープを置き換えることで、いくつかの非互換性の問題を修正できます。 \s
エスケープを[[:space:]]
に置き換えると、スペースマッチングの問題が解決されます。
busybox
がどのように機能するかを誤解しているようです。このツールは、呼び出される名前(またはサブコマンド)に応じて異なる方法で動作する単一の実行可能ファイルです。 sed
バイナリ(またはbusybox sed
)を指すシンボリックリンクbusybox
を呼び出すと、「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)