替换每一行的最后一个字符

Sta*_*ess 4 sed

我有一个浮点数以字符结尾的 csv 文件:

1, 2, 6, 7, "p"
1, 6, 7, 2, "e"
Run Code Online (Sandbox Code Playgroud)

等等。

对于分类任务,我想将“p”替换为 0,将“e”替换为 1。也就是说,我想:

1, 2, 6, 7, 0
1, 6, 7, 2, 1
Run Code Online (Sandbox Code Playgroud)

对于我文件中的所有 8000 行。

我试过了:

sed -i 's/"p"$/0' filename.csv
Run Code Online (Sandbox Code Playgroud)

sed -i 's"p"$0//' filename.csv
Run Code Online (Sandbox Code Playgroud)

但都不起作用。如何使用 sed 替换每行中的几个字符?

小智 8

sed -e 's/"p"$/0/; t' -e 's/"e"$/1/' filename.csv
Run Code Online (Sandbox Code Playgroud)

使用t,如果第一个替换成功,我们就会分支,防止尝试第二个替换。这是每行最多进行一次替换的常见习语。