CSV dosyasında satır sayısını almak için Unix komutu


22

Gelen CSV dosyalarından satır sayısını almak zorundayım.

Sayımı almak için aşağıdaki komutu kullandım.

wc -l filename.csv

1 kaydı ile gelen bir dosya düşünün \*, başlangıçta bazı dosyaları alıyorum ve yukarıdaki komutu verirseniz sayıları döndürür 0.

Neden \*dosyanın başında sayılan bir satır olarak görünmüyor ve etrafta bir iş var mı?


"kedi dosyaadı.csv | wc -l" komutunu deneyin
19:30

4
"kedi dosyaadı.csv | wc -l" mantıksal olarak "wc -l dosyaadı.csv" ile aynı şeyi yapar ancak daha az verimli ve şıktır
Alex

Devoloper250, son paragrafı biraz daha açıklığa kavuşturur musun? Bir örnek de yardımcı olabilir.
Alex

örneğin: Satır başında * (yıldız işareti) olan 1 kayıtlı csv dosyalarını alıyorum. Wc -l fn.csv verdiğimde sayımı 0 olarak sayıyorum ama ideal olarak 1 olmalı.
Devoloper250

"Cat filename.csv" komutunu çalıştırdığınızda ne gibi sonuçlar elde edilir? Ayrıca, hangi dağıtımı kullanıyorsunuz?
JNevill

Yanıtlar:


9

Sonlandırılmayan satırların da sayılmasını sağlamanın bir püf noktası şunlar olabilir:

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

Bu, boş olmayan tüm satırları sayar gibi görünür, ancak boş satırları atlar.

Lütfen bunun etkisiz olduğuna dikkat edin, ancak bu muhtemelen kullanımsal kullanım için bir sorun değildir.

Başka bir olasılık, sonlandırılmamış son satır dahil tüm satırları sayar:

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

RHEL 6.2'de test edilmiştir. YMMV.


awkOS X üzerinde komut çalışır
Micah Stubbs

1

wc, yalnızca bir satırlık ve sonda satırsonu olmayan dosyalar için 0 bildirir. Belki bir rekor csv dosyalarınız bu şekildedir? Onaltılık yeni satırları hexdump ile arayabilirsiniz, örneğin:

hexdump -C fn.csv

Sonunda ascii kodu 0a'yı arayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.