Просто используйте разделитель записей в awk
в конце строки DOS (\r\n
), чтобы они не рассматривались как часть строки. В мире Unix обычно заканчиваются только \n
, что является значением RS
по умолчанию.
awk -v RS="\r\n" '{ print length($0), $0 }'
Вы также можете sub()
/ gsub()
функции для замены этих символов в каждой строке и применения ваших действий.
Чтобы обрабатывать оба окончания в стиле Unix / DOS, сделайте Определение RS: регулярное выражение, которое встречается ноль или более вхождений \r
awk -v RS="[\r]*\n" '{ print length($0), $0 }'
Оба варианта поддерживаются в GNU awk
только потому, что версия POSIX не «принимает» многосимвольный разделитель записей.