Проблема в том, что wc -l
, вероятно, подсчитывает \n
символов (символы новой строки), а файл, в котором есть три строки, но не заканчивает свою последнюю строку новой строкой, вообще имеет только две новые строки ... Это обычное дело с инструментами (такими как Excel) при экспорте в виде текстовых файлов ... возможно, если вы откроете файл с помощью редактора, он заметит, что файл не заканчивается символом новой строки (или что в нем отсутствует новая строка в последняя строка), и когда вы закрываете ее, редактор добавляет ее в файл.
Согласно соглашению, текстовые строки должны заканчиваться символом конца строки (будь то ASCII CR, ASCII LF или пара ASCII CR ASCII LF, в зависимости от операционной системы), но по соглашению может соблюдаться или нет. Microsoft всегда славилась тем, что вела левостороннее движение (пожалуйста, простите меня, engli sh men) и пыталась установить sh свои собственные соглашения, поэтому вы можете понять, что текстовый файл с N строками может иметь N или N-1 строку. символы терминатора.