1

我有一个 500MB 大小的文件。它有一些非ASCII字符。我只想使用 Unix 命令找出这些字符。可能会更好地获取每行的行号和位置。

谢谢 :)

4

2 回答 2

3

使用其他解决方案中给出的答案,但添加-ngrep.

于 2010-12-07T05:51:09.547 回答
2

你知道,这很奇怪。有时我发现编写一些快速而肮脏的 C 代码比尝试浏览大量 UNIX 实用程序命令行选项更快:-)

#include <stdio.h>

int main (void) {
    size_t ln = 1;
    size_t chpos = 0;
    int chr;
    while ((chr = fgetc (stdin)) != EOF) {
        if (chr == '\n') {
            ln++;
            chpos = 0;
            continue;
        }
        chpos++;
        if (chr > 127) {
            printf ("Non-ASCII %02x found at line %d, offset %d\n",
                chr, ln, chpos);
        }
    }
    return 0;
}

这将为您提供 ASCII 范围之外的任何字符的行号和该行内的字符位置。

于 2010-12-07T06:17:16.080 回答