我有一个 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