使用sed替换CSV文件中<96>为短横线失败的技术求助
解决sed替换<96>未生效的问题
我来帮你搞定这个sed替换的问题!你的命令没生效的核心原因是模式中的&是sed的特殊元字符——它在sed的替换语法里代表「匹配到的整个字符串」,直接写<96>会被sed错误解析,导致无法匹配目标内容。
下面是两种可行的解决方法:
方法1:转义特殊字符&
把模式中的每个&用反斜杠\转义,让sed把它当作普通字符处理:
sed -i -e 's/\<96\>/-/g' /tmp/test.csv
验证步骤(避免误改原文件):
先去掉-i参数,把替换结果输出到终端确认:
sed -e 's/\<96\>/-/g' /tmp/test.csv
看到"/AMMWDC04_DC/A0F0 - AA DR"这样的结果后,再加上-i修改原文件。
方法2:直接匹配目标字符(如果适用)
如果<96>是HTML转义的短横线(EN DASH,Unicode U+2013),你也可以直接替换这个字符本身(前提是你的系统和文件编码支持):
sed -i -e 's/–/-/g' /tmp/test.csv
注意:这里的
–是实际的短横线字符,和普通减号-是不同的Unicode字符,需要确保文件里的内容确实是这个字符而非转义字符串。
内容的提问来源于stack exchange,提问作者codec
相关产品推荐
相关产品推荐

