I am unsure if I am misunderstanding something or just not searching correctly. However, I have an issue that I am testing with a simple echo command and piping to sed to replace part of the string that matches $SYNC and replaces with /home/pi/sync

here is what I am using for testing:

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

it keeps giving back


It was my understand that the above sed command would replace $SYNC with /home/pi/sync

I will be using it in part of a larger line that follows:

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"

essentially, I am getting the line with the file path and grabbing everything after the '= ' which returns the $SYNC/file.mp3 which then I can pipe into mp3info to get the mp3 information.

I have tried without a second sed command but the Environment variable doesn't get expanded and it returns an error of no such directory such as:

$SYNC/mp3file.mp3 does not exist

but when I replace the $SYNC manually with /home/pi/sync/mp3file.mp3 it works fine.

I am open to any other way of doing so without using sed, I just figured sed would be the simplest way to do so.

1 Answer 1


I have figured out the answer, it was a simple mistake due to my inexperience with shell

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .