Answers:
只需使用以下语法:
sed 's/馑//g' file1
或以转义形式:
sed "s/$(echo -ne '\u9991')//g" file1
(请注意,较早版本的Bash和某些Shell无法理解echo -e '\u9991',因此请首先检查。)
sed具有g修饰符,因此它们在彼此跟随时也替换了所有出现的情况。sed也应将其视为一个字符,请参见:echo -ne "馑" | wc -m给1。如果计算字节数(wc -c),它将返回3。我是否正确理解您的问题?
.指“一个字符”还是“一个字节”?
echo 馑 | sed s/...//给了我馑(什么都替换不了)
en_US.UTF-8,但不能在下运行C。
Perl可以做到:
echo 汉典“馑”字的基本解释 | perl -CS -pe 's/\N{U+9991}/Jin/g'
-CS 为标准输入,输出和错误打开UTF-8。
sed支持Unicode的多个版本:
我找不到有关BSD sed的信息,我认为这很奇怪,但我认为它也支持Unicode的可能性很大。不幸的是,没有标准的方法可以告诉您sed要使用哪种编码,因此每个编码都有自己的方式。
这对我有用:
$ vim -nEs +'%s/\%u9991//g' +wq file1
这比我想要的更冗长。这是完整的解释:
-n 禁用vim交换文件-E 改进模式-s 静音模式+'%s/\%u9991//g' 执行替代命令+wq 保存并退出file1 就地修改的,对吗?
echo 馑 | sed s/...//打印什么吗?