我有如下的大量数据
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)
而对于其余的线路,和我的线路一样多
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)