Считайте строки с помощью awk, независимо от стиля окончания строки

Как лучше всего подсчитать количество строк в файле с помощью awk, независимо от стиля окончания строки (DOS/Windows, UNIX и т. д.)?


awk
person Tyson    schedule 03.10.2009    source источник
comment
GNU Awk позволяет использовать регулярные выражения в качестве разделителей записей. Так что вы могли бы сделать gawk 'END { print NR }' RS='\n\r|\n|\r\n'. Но это расширение.   -  person Johannes Schaub - litb    schedule 03.10.2009
comment
Это на самом деле по-прежнему сообщает только одну строку для файла, на котором я пытаюсь это сделать. Когда я открываю рассматриваемый файл в TextMate, он имеет правильную нумерацию строк, поэтому я предполагаю, что он не поврежден.   -  person Tyson    schedule 03.10.2009
comment
Но, извините меня, если это очевидно для вас, пример litb не включал CR only окончания строк, но, похоже, это то, что вы ищете.   -  person pavium    schedule 03.10.2009
comment
Взрыв! Не могу поверить, что это не пришло мне в голову. Теперь я чувствую себя немым. @litb - если вы опубликуете это как ответ, я отмечу его как принятый.   -  person Tyson    schedule 03.10.2009


Ответы (3)


сначала выполните dos2unix или unix2dos в файле, прежде чем использовать awk.

person ghostdog74    schedule 03.10.2009

Вы можете написать скрипт для подсчета количества строк и получить идеальный результат. Сценарий для этого же доступен здесь, Подсчитать число строк в UNIX, в которых есть данные

person farhankhwaja    schedule 07.11.2012

Как насчет

grep -c '^.*$' filename
person Peter    schedule 03.10.2009
comment
Нет -- то же самое. Он сообщает одну строку для файлов, использующих стиль окончания строки только для CR. - person Tyson; 03.10.2009