将特殊字符更改为空格

问题描述

我有一个包含几个特殊字符的变量。现在我想把这些变成空间 如果我一一做,变化就很好 例如txt=$(printf "$txt" | sed 's/\xE2/ /g')

现在要一次更改它们,我将所有特殊字符插入到这样的文件中: \xE1 \xE2 \xC3 ...

如果我想通过这样做来改变这一点,什么都不会发生: while IFS=: read -r special 做 txt=$(printf "txt" | sed 's/$special/ /g') done

这个循环有什么问题?

解决方法

此作业不需要

sed(或任何其他外部实用程序或循环)。您可以使用内置的 bash 参数扩展:

var=${var//[$'\xe1\xe2\xc3']/ }

将立即完成工作。


更新评论后“但是如果你需要更改很多特殊字符(大约 50 个)我想将它们保存在一个文件中,所以如果我添加添加一个我不需要更改程序,只需更改文件"

一种方法是在名为 spcharsspchars=$'\xe1\xe2\xc3' 的文件中定义一个变量,例如 special_characters,作为 source 到您的脚本中:

. special_characters
var=${var//[$spchars]/ }

那么您就不需要修改脚本,只需修改文件 spchars 中的参数 special_characters