Colored output breaks pipes

This is part of the Semicolon&Sons Code Diary - consisting of lessons learned on the job. You're in the unix category.

Last Updated: 2024-11-21

I could not get a substitution of some backslashes working in sed in this pipe:

i.e. the data was

episodes/ep-25.mp4
episodes/ep-26.mp4

I ran this command:

cat /tmp/data.json | jq -M ".Contents [] .Key" | rg "episodes" | sed 1d | gsed "s/episodes\///"

But the output was the same as the input. Removing the backslash in sed got it to work. Somehow my reference to backslash was not working.

After thinking about it, I noticed that rg had highlighted in color the bit it matched episodes Therefore there were escape characters breaking sed's matching. Once I disabled rg color, things worked fine.

cat /tmp/data.json | jq -M ".Contents [] .Key" | rg "episodes" --color never | sed 1d | gsed "s/episodes\///"