我正在尝试以下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
答案 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,但没有详细说明。