替换每行的最后一个字符

替换每行的最后一个字符

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

1, 2, 6, 7, "p"
1, 6, 7, 2, "e"

ETC。

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

1, 2, 6, 7, 0
1, 6, 7, 2, 1

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

我努力了:

sed -i 's/"p"$/0' filename.csv

sed -i 's"p"$0//' filename.csv

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

答案1

sed -e 's/"p"$/0/; t' -e 's/"e"$/1/' filename.csv

对于t,如果第一次替换成功,我们就会分支,从而阻止尝试第二次替换。这是每行最多进行一次替换的常见习惯用法。

答案2

你的第一个sed缺少终止/。使用sed -i 's/"p"$/0/' filename.csv

答案3

sed 's/"p"$/0/;s/"e"/1/' file.txt

相关内容