Команда Unix для отримання кількості рядків у файлі CSV


22

Я повинен отримати кількість рядків з вхідних файлів CSV.

Я використовував таку команду, щоб отримати рахунок.

wc -l filename.csv

Розглянемо файл, що надходить з 1 записом, я отримую декілька файлів з a \*на початку, і для цих файлів, якщо я видаю вищевказану команду, вона повертає кількість 0.

Чому \*на початку файл не реєструється як лічильний рядок і чи існує робота?


спробуйте "cat filename.csv | wc -l"
chaput

4
"cat filename.csv | wc -l" логічно робить те саме, що і "wc -l filename.csv", але є менш ефективним та елегантним
Алекс

Devoloper250, ви могли б уточнити цей останній абзац трохи більше? Приклад теж може допомогти.
Алекс

наприклад: Я отримую CSV файли з 1 записом, у яких * (зірочка) на початку рядка. Коли я видаю wc -l fn.csv, я вважаю, що це 0, але в ідеалі це повинно бути 1. Чи має * * (зірочка) якусь конкретну справу робити там, як інші макіяжі?
Devoloper250

Які результати під час запуску "cat filename.csv"? Крім того, який розподіл ви використовуєте?
JNevill

Відповіді:


9

Трюком для того, щоб перерахувати також неперервані рядки, може бути:

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

Це, здається, рахує всі не порожні рядки, але пропускає порожні рядки.

Зверніть увагу, що це досить неефективно, але це, мабуть, не є проблемою для професійного використання.

Інша можливість, рахує всі рядки, включаючи останній рядок, що не припиняється:

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

Випробувано на RHEL 6.2. YMMV.


що awkкоманда працює на OS X
Михей Стаббс

1

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

hexdump -C fn.csv

Шукайте в кінці ascii код 0a.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.