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.