如何将字母替换为某个数字

Lea*_*ner 0 perl awk sed

我有如下的大量数据

NDDDDTSVCLGTRQCSWFAGCTNRTWNSSA 0
VCLGTRQCSWFAGCTNRTWNSSAVPLIGLP 0
LTWSGNDTCLYSCQNQTKGLLYQLFRNLFC 0
CQNQTKGLLYQLFRNLFCSYGLTEAHGKWR 0
ITNDKGHDGHRTPTWWLTGSNLTLSVNNSG 0
GHRTPTWWLTGSNLTLSVNNSGLFFLCGNG 0
FLCGNGVYKGFPPKWSGRCGLGYLVPSLTR 0
KGFPPKWSGRCGLGYLVPSLTRYLTLNASQ 0
QSVCMECQGHGERISPKDRCKSCNGRKIVR 1 
Run Code Online (Sandbox Code Playgroud)

我想使用以下键将数字替换为数字

A   1
R   2
N   3
D   4
B   5
C   6
E   7
Q   8
Z   9
G   10
H   11
I   12
L   13
K   14
M   15
F   16
P   17
S   18
T   19
W   20
Y   21
V   22
Run Code Online (Sandbox Code Playgroud)

起初我想删除所有接近字母的数字,然后替换字母,所以让我们看看第一个像

NDDDDTSVCLGTRQCSWFAGCTNRTWNSSA 
Run Code Online (Sandbox Code Playgroud)

会有这个

3 4 4 4 4 19 18 22 6 19 13 10 19 2 8 6 18 20 16 1 10 6 19 3 2 19 20 3 18 18 1
Run Code Online (Sandbox Code Playgroud)

而对于其余的线路,和我的线路一样多

gle*_*man 5

perl -e'
    use autodie;
    my %charmap = (
        A =>  1, R =>  2, N =>  3, D =>  4, B =>  5, C =>  6, E =>  7, Q =>  8,
        Z =>  9, G => 10, H => 11, I => 12, L => 13, K => 14, M => 15, F => 16,
        P => 17, S => 18, T => 19, W => 20, Y => 21, V => 22,
    );
    while (<>) {
        s{(.)}{ ($charmap{$1} // $1) . " " }ge;
        print;
    }
' file
Run Code Online (Sandbox Code Playgroud)

要不就

perl -pe'
    BEGIN { @charmap{ split //, "ARNDBCEQZGHILKMFPSTWYV" } = 1..22 }
    s{(.)}{ ($charmap{$1} // $1) . " " }ge;
' file
Run Code Online (Sandbox Code Playgroud)