toughtalker toughtalker - 1 month ago 13
Linux Question

sed replace with hex

UTF-8 file test.txt:

AAAAAAAAAAAAAA


hex is

41 41 41 41 41 41 41 41 41 41


sed s/A/B/g test.txt
works

sed s/\x41/B/g test.txt
does not work

Some characters are unprintable so I must use their hex,
A
is just an example.

Answer

the shell preprocesses it, use single quotes.

sed 's/\x41/B/g' test.txt

echo -e \x41   # x41
echo -e '\x41' # A