Usando sed para substituir a variável de ambiente pelo caminho do diretório

0

Não tenho certeza se estou entendendo mal alguma coisa ou não estou pesquisando corretamente. No entanto, tenho um problema que estou testando com um comando echo simples e canalização para sed para substituir parte da string que corresponde a $ SYNC e substitui por / home / pi / sync

aqui está o que estou usando para teste:

echo '$SYNC/somedirectory' | sed 's|"$SYNC"|"/home/pi/sync"|'

continua a devolver

$SYNC/somedirectory

Eu entendi que o comando sed acima substituiria $ SYNC por / home / pi / sync

Eu vou usá-lo em parte de uma linha maior que segue:

grep -w "file_path =" /home/pi/lightshowpi/config/state.cfg | sed 's/.*= //'| (this is where I need to replace the $SYNC with /home/pi/sync) | xargs mp3info -p "%a"

Essencialmente, estou obtendo a linha com o caminho do arquivo e pegando tudo depois do '=' que retorna o arquivo $ SYNC / file.mp3 que eu posso enviar para mp3info para obter as informações do mp3.

Eu tentei sem um segundo comando sed, mas a variável Environment não foi expandida e ele retorna um erro de nenhum diretório como:

$SYNC/mp3file.mp3 does not exist

mas quando eu substituo o $ SYNC manualmente por /home/pi/sync/mp3file.mp3 ele funciona bem.

Estou aberto a qualquer outra maneira de fazer isso sem usar o sed, apenas imaginei que sed seria a maneira mais simples de fazer isso.

    
por Brett Reinhard 02.12.2016 / 17:57

1 resposta

1

Eu descobri a resposta, foi um erro simples devido à minha inexperiência com o shell

grep -w "file_path =" /home/pi/lightshowpi/config/state.cfg | sed 's/.*= //'| sed 's|'\$SYNC'|'/home/pi/sync'|' | xargs mp3info -p "%a"
    
por 02.12.2016 / 18:06