Я выполняю задание на импорт действительно большого файла MySQL, который по большей части не имеет разрывов строк.

Используя список процессов mysql, я смог точно определить идентификатор текущей вставляемой записи.

То, что я хочу сделать, это выяснить символ, под которым этот идентификатор появляется в файле, чтобы я мог выяснить, какой процент выполнения задания импорта выполнен.

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

Могу ли я что-нибудь сделать с grep (или какой-нибудь другой командой), чтобы узнать, как далеко символ находится в файле?

1 ответ1

1

Вы можете заменить все пробелы (или точки с запятой или ...) символами новой строки и grep и wc -l результата.

sed -e 's/ /\n/g/' input > result
wc -l < result
grep -n "$id" result

Если вы не хотите создавать дополнительный файл, вызовите Perl для спасения:

perl -e '$/ = " "; /ID/ and print "[$.]" while <>; print "$.\n"' input

Должен вывести что-то вроде [145]300 , то есть идентификатор появился в записи 145 из 300. $/ - разделитель записей, $. это счетчик ресурсов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .