sed string with bad chars
This will create the correct regex:
a="$(printf '%s' {a..z} {A..Z} {0..9} - )"
b="_*+ßäöü()%@€&=."
regex="[^$b$a]"
replaceChar="_"
Then this will work:
line="testflŒÆ˘ˆı››◊‹ıÓÌˇˆÁÓˆfl̈™ˇÏˆıÍÓÌıÓWÌtest"
echo "$line" | sed -e "s/${regex}/${replaceChar}/g"
test_______________________________W_test
It is interesting to note that if LANG=C
the command will fail.
Even with a regex as simple as this:
$ (LANG=C; echo "testflŒÆtest" | sed -e "s/[^tesæ]/_/g")
test_____�_test
To see what character number that is:
$ (LANG=C; echo "testflŒÆtest" | sed -e "s/[^tesæ]/_/g")|od -An -tcx1
t e s t _ _ _ _ _ 303 _ t e s t \n
74 65 73 74 5f 5f 5f 5f 5f c3 5f 74 65 73 74 0a
That is: 303. That repeats for longer strings as well. Maybe is what you saw.