【发布时间】:2011-05-17 19:16:35
【问题描述】:
我正在尝试以下 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 脚本没有问题,一定与您的语言环境/文件编码有关。
-
我有以下语言环境:'de_DE.UTF-8'
-
它适用于 en_US.UTF-8 和 de_DE.UTF-8 的 GNU sed 版本 4.2.1。你的
sed是哪个版本的? -
GNU sed 版本 4.1.2 - 也许我的问题令人困惑:
-
回声“ä#asdf” | sed "s/\([^-]\)#/\1\n/g" 应该输出与 echo "x#asdf" | sed "s/\([^-]\)#/\1\n/g"
标签: sed char special-characters