How to remove terminal escape sequences from strings?
How to remove terminal escape sequences from strings?
I'm writing a fish script to process the output of music tagging programs (like operon). I use this for instance to list the filenames of all music tracks in a collection that are missing certain tags like a date of release or which have a CD number tag but no tracknumber tag.
Unfortunately the output I'm parsing may control control characters // escape sequences. This caused me quite a lot of headache during debugging.
Take the following string for instance: it will display as tracknumber
(including the leading whitespace` in my terminal. The word itself only has 11 characters so naturally I tried to call string trim on it, but that doesn't actually alter it because on closer inspection the character sequence looks like this:
string_value= tracknumber string_length=16 0: :[ 2:0 3:m 4: 5:t 6:r 7:a 8:c 9:k 10:n 11:u 12:m 13:b 14:e 15:r
As you can see it starts with a terminal escape sequence which is rendered as a whitespace.
Is there an easy way to strip any and all escape sequences from a variable? I used regular expression search and replace with some success, but that seems quite a brittle approach as I can't anticipate every single (edge) case and could also accidentally remove stuff I want to keep.