I am working on a command that replaces all digits 0-9 with their corresponding letters in sed. I know I'm doing something wrong, but sed is not interpreting the replacement regex as anything but a string literal.
The command I am using is sed -r 's/[0-9]/[A-J]/g' log > ~/output.txt
It seems pretty straightforward to me, but I have been stuck on it for about an hour. The output I receive just replaces 0-9 with the string "[A-J]"
Best Answer
In substitution, only the match (left-hand side) is a regular expression. The replacement is more or less just a literal string (with some backslash expansion) – it's not a regex.
You want transliteration, not substitution, so replace
s
withy
:sed can't use ranges in
y
, but Perl can:Or just use
tr
: