Bash中十六进制的音译特征

onl*_*lyf 2 bash perl sed tr

我有一组十六进制,其中id就像音译到另一组十六进制,例如:

x00 -> x20
xB0 -> x20
x21 -> x40
x80-xFF -> x20
x22 -> x43
Run Code Online (Sandbox Code Playgroud)

我知道我可以链接sed语句,如:

sed -i.bak $'s/[\x80-\xFF]/\x20/g'
Run Code Online (Sandbox Code Playgroud)

或者喜欢:

sed -e 's/\x00/\x20/g;s/\xB0/\x20/g'
Run Code Online (Sandbox Code Playgroud)

但有没有办法按行"打破"这些单独的更改,以便更具可读性?喜欢 :

sed -e '
 s/\x00/\x20/g;
 s/\xB0/\x20/g;
 .
 .
 .
 ' File_In > File_out
Run Code Online (Sandbox Code Playgroud)

如果不可能,可以用perl完成吗?谢谢.

Sea*_*ght 6

您可以将多个表达式(-e)传递给sed:

sed \
    -e 's/\x00/\x20/g' \
    -e 's/\xB0/\x20/g' \
    -e 's/\x21/\x40/g' \
    -e 's/[\x80-\xFF]/\x20/g' \
    -e 's/\x22/\x43/g' File_In > File_out
Run Code Online (Sandbox Code Playgroud)