删除文件中的非ASCII字符

时间:2010-07-16 12:41:43

标签: unix

如何从文件中删除非ASCII个字符?

5 个答案:

答案 0 :(得分:59)

答案 1 :(得分:8)

tr -dc [:graph:][:cntrl:] < input-file > cleaned-file

假设您要保留“控制”字符和“可打印”字符。根据需要小提琴。

答案 2 :(得分:5)

perl -pe's/[[:^ascii:]]//g' < input.txt > output.txt

答案 3 :(得分:3)

您可以编写如下的C程序:

#include <stdio.h>
#include <ctype.h>

int main(int argc, char **argv)
{
   FILE *fin = fopen("source_file", "rb");
   FILE *fout = fopen("target_file", "w");
   int c;
   while ((c = fgetc(fin)) != EOF) {
       if (isprint(c))
          fputc(c, fout);
   }
   fclose(fin);
   fclose(fout);
   return 0;
}

注意:为简单起见,避免了错误检查。

用以下内容编译:

$ gcc -W source_code.c -o convert

使用以下命令运行:

$ ./convert

答案 4 :(得分:1)

我的two cents:它可能无法解决您的问题,但它可能会给您一些提示。

file命令告诉您文件编码,即UTF,ASCII等,iconv可以在不同编码之间转换文件。