sed usar a partir do shell do Android

1

Estou familiarizando-me com o sed na emulação do terminal Android: a versão que estou usando o sed incluído na toybox que está instalada no meu dispositivo Sony sem raiz. sed --version (ou toybox sed --version) fornece o mesmo resultado:

Este não é o GNU sed 9.00

Agora, eu li o manual específico do toybox sed, e tentei alguns simples liners (a idéia é incluir aqueles em scripts que eu poderia lançar manualmente). Agora, a primeira coisa que notei é que, se eu tentar incluir o script em colchetes simples (es sed-e / foo / bar / 'file), isso não é interpretado corretamente.

O comando funciona usando os colchetes duplos, mas estou tendo problemas com a maneira como os scripts são interpretados (ou talvez eu esteja fazendo as coisas erradas). Exemplo. Eu tento substituir uma palavra dentro de um arquivo. O arquivo é uma string "string test", que pretendo converter em "string de prova". O resultado é que a string é substituída, mas a string anterior é anexada ao restante da linha:

user:$ ls
 file.txt
 n.sh
 s.sh
 save
 script_gian.sh
 sed_script
user: $ cat file.txt
 stringa di test
user:$sed -i -e "s/test/prova/g" file.txt                        <
 ^C1|user:$ cat file.txt
stringa di test
user:$  sed -r -e "s/test/prova/1" file.txt > f.txt                <
user:$ ls
 f.txt
 file.txt
 file.txtFD4OVI
 n.sh
 s.sh
 save
 script_gian.sh
 sed_script
user:$ cat f.txt
stringa di provastringa di test
user:$ cat file.txt
 stringa di test
user: $

Outra coisa interessante é que tentar usar os resultados de flag (global) g em suspensão de suspensão e ter que ser interrompido com o comando CONTROL C. -i também resulta em interrupção do sed.

Eu também tentei enviar uma string para sed com:

cat file.txt | sed -e "s/foo/bar/" > newfile.txt

Mas o resultado é exatamente o mesmo. A palavra dentro da string é substituída, e a linha como era antes da substituição é anexada logo após (isto também exclui os caracteres restantes na linha) - Estou usando sed incorretamente ou há algo na versão de sed que estou tentando usar?

    
por Giankun 18.05.2016 / 16:52

1 resposta

1

Eu poderia confirmar (graças ao canal #toybox irc) que o problema era realmente um bug no toybox sed, que deveria ter sido resolvido, mas o Android M ainda vem com uma versão desatualizada do toybox. Estes são os links para a lista de discussão toybox (que, infelizmente, eu perdi) onde os problemas foram discutidos:

link

link

Muito ruim, vou ter que esperar por uma versão atual do toybox com uma futura atualização do Android.

    
por 20.05.2016 / 15:24