20

Я должен получить количество строк из входящих файлов CSV.

Я использовал следующую команду, чтобы получить счет.

wc -l filename.csv

Рассмотрим файл, идущий с 1 записью, я получаю некоторые файлы с \* в начале, и для этих файлов, если я выполню указанную выше команду, он возвращает счетчик 0 .

Почему \* в начале файла не регистрируется как счетная строка и есть ли обходной путь?

2 ответа2

9

Уловка, чтобы гарантировать, что также подсчитываются не завершенные строки:

cat filename.csv | xargs -l echo | wc -l

Это, кажется, подсчитывает все непустые строки, но пропускает пустые строки.

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

Другая возможность, подсчитывает все строки, включая не завершенную последнюю строку:

awk '{n+=1} END {print n}' filename.csv

Проверено на RHEL 6.2. YMMV.

1

wc сообщит 0 для файлов только с одной строкой и без завершающей новой строки. Может быть, ваши CSV-файлы с одной записью такие? Вы можете искать завершающие символы новой строки с помощью hexdump, например:

hexdump -C fn.csv

Ищите код ASCII 0a в конце.

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