Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sed和特殊字符_Sed_Char_Special Characters - Fatal编程技术网

sed和特殊字符

sed和特殊字符,sed,char,special-characters,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

我正在尝试下面的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

我不确定这一点,因为您的sed命令对我来说工作正常(gnu sed 4.1.5),但请尝试以这种方式调用sed:

$ LANG=de_DE.UTF-8 sed ...
有关更多信息,请参阅本文:


如果这不起作用,如果可以的话,升级到gnu sed 4.2可能会有所帮助。新闻文件中说4.2的“多字节处理已修复”,但没有进一步详细说明。

在这里可以正常工作。您的sed脚本没有问题,必须与您的区域设置/文件编码有关。我有以下区域设置:“de_de.UTF-8”它在en_US.UTF-8和de_de.UTF-8的GNU sed版本4.2.1中对我有效。您使用的是哪个版本的
sed
?GNU-sed版本4.1.2-也许我的问题让人困惑:echo“ä#asdf”sed“s/\([^-]\)\/\1\n/g”的输出应该与echo“x#asdf”sed“s/\([^-]\)\/\1\n/g”的输出相同