![替换每行的最后一个字符](https://linux22.com/image/106995/%E6%9B%BF%E6%8D%A2%E6%AF%8F%E8%A1%8C%E7%9A%84%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E5%AD%97%E7%AC%A6.png)
我有一个 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