是否可以在unix中的文件中搜索非ASCII字符集�
?
我想在bash中搜索所有这些字符,用两个空格替换它们。
sed -i 's/[�]/\ \ /g' filename
最后工作了
答案 0 :(得分:1)
搜索这些字符的方式取决于文件中的编码。如果文件采用UTF-8编码,则可以设置UTF-8语言环境,并简单地将它们与shell匹配。假设GNU sed(Linux上的默认设置),命令行将如下所示:
LANG=C.UTF-8 sed -i 's/[�]/ /g' filename
要使其正常工作,您必须使用符合UTF-8标准的shell,例如echo 'ï' | wc -c
输出3
(两个UTF-8代码单元加上换行符)。
答案 1 :(得分:1)
您似乎正在使用Latin-1工具查看UTF-8数据。因此,您的问题基本上是不明确的,但假设您要查找包含UTF-8替换字符的文件,请尝试类似
的内容perl -CSD -nle 'if m/^\x{FFFD}/ { print $ARGV; close() }' files ...
以下是我用来理解你问题的内容:
$ echo -n '�' | iconv -t iso-8859-1 | xxd
0000000: efbf bd
Google搜索efbfbd
迅速将http://www.fileformat.info/info/unicode/char/0fffd/index.htm提升为热门点击。
另请注意,U + FFFD基本上是错误代码。你应该不找到并替换它。你应该找出哪个先前的编码步骤失败并产生了这个,然后修改它。