【发布时间】:2021-06-09 08:06:48
【问题描述】:
我有一个包含几个特殊字符的变量。现在我想把这些变成空间 如果我一个一个地做,变化就很好 例如txt=$(printf "$txt" | sed 's/\xE2/ /g')
现在要一次全部更改它们,我将所有特殊字符插入到这样的文件中: \xE1 \xE2 \xC3 ...
如果我想通过这样做来改变它,什么都不会发生: 而 IFS=: 读取 -r 特殊 做 txt=$(printf "txt" | sed 's/$special/ /g') 完成
这个循环有什么问题?
【问题讨论】:
-
要扩展变量 special,您需要将 sed 语句放在双引号中,而不是单引号中,因此 ... "s/$special/ /g"
-
单引号不展开变量。 Sed 不会扩展变量。
-
假设模式可能会随着时间而改变(即,不想将模式硬编码到您的解决方案中)看看这个sed solution,它似乎与您尝试的类似做;如果这对您不起作用,请使用原始
txt=...语句、模式文件的内容(例如,cat specialchar.txt)和txt的预期值更新问题,一旦所有替换都已成功执行 -
你确定这适用于 \xE2 吗?