1

サイズが500MBのファイルがあります。ASCII 以外の文字が含まれています。Unixコマンドを使用してそれらの文字を見つけたいだけです。行番号と各行の位置を取得する方が良いかもしれません。

ありがとう :)

4

2 に答える 2

3

他の解決策で与えられた答えを使用しますが、に追加-nしてgrepください。

于 2010-12-07T05:51:09.547 に答える
2

変ですよね。UNIXユーティリティのコマンドラインオプションの荒野をナビゲートするよりも、簡単で汚いCをコーディングする方が速い場合があります:-)

#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 に答える