I've to apply the Unix command sed on a string (can contain #, !, /, ?, &, @ and all other characters) which can contains all types of character (&, |, !, /, ? ...)
Is it a complex delimiter (with two caracters ?) which can permits to outpass the error :
sed: -e expression #1, char 22: unknown option to `s'
Thanks in advance
The characters in the input file are of no concern - sed
parses them fine. There may be an issue, however, if you have most of the common characters in your pattern - or if your pattern may not be known beforehand.
At least on GNU sed, you can use a non-printable character that is highly improbable to exist in your pattern as a delimiter. For example, if your shell is Bash:
$ echo '|||' | sed s$'\001''|'$'\001''/'$'\001''g'
In this example, Bash replaces $'\001'
with the character that has the octal value 001
- in ASCII it's the SOH character (start of heading).
Since such characters are control/non-printable characters, it's doubtful that they will exist in the pattern. Unless, that is, you are doing something weird like modifying binary files - or Unicode files without the proper locale settings.