Lệnh Unix để lấy số dòng trong tệp CSV


22

Tôi phải lấy số lượng dòng từ các tệp CSV đến.

Tôi đã sử dụng lệnh sau để có được số đếm.

wc -l filename.csv

Hãy xem xét một tệp đi kèm với 1 bản ghi, tôi sẽ nhận được một số tệp \*khi bắt đầu và đối với các tệp đó nếu tôi ban hành lệnh trên, nó sẽ trả về số lượng 0.

Tại sao \*ở đầu tập tin không đăng ký như là một dòng được tính và có một công việc xung quanh?


thử "tên tệp
mèo.csv

4
"Cat filename.csv | wc -l" về mặt logic thực hiện tương tự như "wc -l filename.csv" nhưng kém hiệu quả và thanh lịch
Alex

Devoloper250, bạn có thể làm rõ đoạn cuối đó một chút nữa không? Một ví dụ có thể giúp quá.
Alex

ví dụ: Iam nhận tệp csv với 1 bản ghi có * (dấu hoa thị) ở đầu dòng. Khi tôi phát hành wc -l fn.csv tôi được tính là 0 nhưng lý tưởng nhất là 1. Có phải (dấu hoa thị) có bất kỳ điều cụ thể nào để làm ở đó như các ký tự đại diện khác không ??
Devoloper250

Kết quả khi bạn chạy "cat filename.csv" là gì? Ngoài ra, phân phối nào bạn đang sử dụng?
JNevill

Câu trả lời:


9

Một mẹo để đảm bảo rằng các dòng không kết thúc cũng được tính có thể là:

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

Điều này dường như để đếm tất cả các dòng không trống, nhưng bỏ qua các dòng trống.

Xin lưu ý rằng điều đó là không hiệu quả, nhưng đó có lẽ không phải là vấn đề đối với việc sử dụng không thường xuyên.

Một khả năng khác, tính tất cả các dòng bao gồm cả dòng cuối cùng không kết thúc:

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

Đã thử nghiệm trên RHEL 6.2. YMMV.


các awklệnh công trình trên OS X
Micah Stubbs

1

wc sẽ báo cáo 0 cho các tệp chỉ có một dòng và không có dòng mới. Có lẽ các tập tin csv một bản ghi của bạn là như thế này? Bạn có thể tìm kiếm các dòng mới với hexdump, ví dụ:

hexdump -C fn.csv

Tìm mã ascii 0a ở cuối.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.