Como executar o comando e usar o resultado corretamente no sed?

1

Eu tenho um arquivo de configuração no formato JSON com o seguinte bloco

"device" :
{
    "name"       : "MyPi",
    "type"       : "ws2801",
    "output"     : "/dev/spidev0.0",
    "rate"       : 250000,
    "colorOrder" : "rgb"
},

Eu uso sed (versão não GNU no Mac OS X) para substituir os valores de string pela expressão sed assim: sed -i '' '1h;1!H;$!d;x;s#\("device" :[^}]*"colorOrder"[ ]*: \)"[^"]*"#"grb"#' hyperion.config.json

Agora quero substituir "output": linha com o resultado de ls /dev/tty.usbmodem* com este comando: %código% No entanto sed -i '' -e '1h;1!H;$!d;x;s#\("device" :[^}]*"output"[ ]*: \)"[^"]*"#"$(ls /dev/tty.usbmodem*)"#' hyperion.config.json não é executado e eu recebo ls Eu tentei substituir aspas simples por aspas duplas com escape dentro da expressão, isso não funcionou.

Então, como posso substituir o valor da saída (dentro do bloco "device") pela saída do comando "output" : "$(ls /dev/tty.usbmodem*)", ?

    
por Gamadril 10.08.2015 / 15:33

2 respostas

1

substitua a peça (dentro das aspas simples)

$(ls /dev/tty.usbmodem*)

por

'"$(ls /dev/tty.usbmodem*)"'

portanto, saindo da parte com aspas simples e inserindo uma aspa dupla para o comando e, em seguida, inserindo novamente aspas simples.

    
por 10.08.2015 / 16:15
1

Adicione cotações como no exemplo abaixo.

Substituir:

'xxx"$(ls /dev/tty.usbmodem*)"xxx'

por:

'xxx"'"$(ls /dev/tty.usbmodem*)"'"xxx'
    
por 10.08.2015 / 16:12

Tags