sed O comando no BusyBox espera uma sintaxe diferente?

4

Espero ter formulado a pergunta corretamente. Eu tenho um script que faz uso de 'sed' muito. Funciona muito bem no meu Ubuntu com o GNU 'sed'. Mas quando eu tento executá-lo no BusyBox, ele falha. Existe uma maneira de obter o sed do GNU no busybox? Eu não sou um profissional do Linux.

    
por tzippy 10.10.2012 / 13:39

2 respostas

5

O Busybox pode ter uma implementação limitada de sed . Você pode copiar o binário sed para algum local e chamá-lo diretamente apontando-o com um caminho completo.

Você pode corrigir alguns problemas de incompatibilidade com a substituição de escapes que o BusyBox embutido sed não suporta, por exemplo, substituir a \s escape por [[:space:]] resolverá o problema de correspondência de espaço.

    
por 10.10.2012 / 15:03
2

Você parece entender mal como o busybox funciona. A ferramenta é um único executável que age de maneiras diferentes, dependendo do nome (ou subcomando) com o qual é chamado. Se você chamar um link simbólico sed apontando para o busybox binário (ou busybox sed ), a funcionalidade "sed" será executada.

Para obter o GNU sed em um ambiente de busybox, você precisa remover o link simbólico sed para busybox e fornecer um binário GNU sed e as bibliotecas das quais ele depende. Você pode identificar as bibliotecas com o comando 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)
    
por 10.10.2012 / 15:34

Tags