Unix-команда для поиска не ascii символов - PullRequest
1 голос
/ 07 декабря 2010

У меня есть файл размером 500 МБ.В нем есть не-ascii символы.Я просто хочу узнать эти символы с помощью команды Unix.Пусть будет лучше узнать номера строк и позиции на каждой строке.

Спасибо:)

Ответы [ 2 ]

3 голосов
/ 07 декабря 2010

Используйте ответ, данный в другом решении , но добавьте -n к grep.

2 голосов
/ 07 декабря 2010

Знаешь, это странно.Иногда я нахожу более быстрым кодировать какой-нибудь быстрый и грязный 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.

...