sed和特殊字符

时间:2010-11-30 10:45:07

标签: sed char special-characters

我正在尝试以下sed命令,但我对特殊字符没有运气:

echo "x#asdf" | sed "s/\([^-]\)#/\1\n/g"

x
asdf

但是如果我在test.txt中使用一些特殊的字符

echo "ä#asdf" | sed "s/\([^-]\)#/\1\n/g"

ä#asdf

为什么?

这有效:

echo "ü#asdf" | sed "s/ü/-/g"
-#asdf

但这不是:

echo "ü#asdf" | sed "s/[ü]/-/g"
ü#asdf

1 个答案:

答案 0 :(得分:0)

我不确定这一点,因为你的sed命令对我来说没问题(gnu sed 4.1.5),但尝试以这种方式调用sed:

$ LANG=de_DE.UTF-8 sed ...

有关详情,请参阅此帖子:Why does sed fail with International characters and how to fix?

如果这不起作用,可能有助于升级到gnu sed 4.2,如果可以的话。 NEWS文件说“固定的多字节处理”为4.2,但没有详细说明。