unix'te belirli sayıda satırı olan bir .gz dosyam varsa. Unix'te satırları açmadan nasıl sayabilirim.
unix'te belirli sayıda satırı olan bir .gz dosyam varsa. Unix'te satırları açmadan nasıl sayabilirim.
Yanıtlar:
Dosya hala sıkıştırılmışsa, açıkça yeni satırları sayamazsınız.
Ancak, bir akışın sıkıştırmasını açabilir ve (akış sıkıştırılmış) dosyayı diske yazmadan bu akıştaki yeni satırları sayabilirsiniz. Bu böyle bir şey giderdi:
zcat file.gz | wc -l
Dekupaj ve kedi için zcat, wordcount için wc. Daha fazla bilgi için her ikisinin de man sayfalarına bakın.
DÜZENLE
Eğer zcat yoksa, zcat sadece bir başka isimdir gunzip -c
.
gzip
Farklı olan Unices'de compress
, istediğiniz gzcat
.
Bu da işe yarıyor - dosyadaki satır sonu sayısını grep
zgrep -Ec "$" file.gz
wc -l
Hızlı bir şekilde yapmak istiyorsanız, 'pigz' (bu, IIRC'nin "GZip'in Paralel Uygulanması" anlamına gelir) kullanılmasını öneririm. Ben sadece benzer bir durum vardı, bir grup gzip'lenmiş dosyadaki satır sayısını saymak istedim ve işte çözümüm:
for x in *.gz; do unpigz -p 8 -c $x | wc -l && echo $x; done
Bu da bana 8 işlemci kullanarak satır sayısını ve alternatif hatlarda saydığı dosyayı verdi. Çabucak kaçtı!
for x in *.fastq.gz; do zcat "$x" | wc -l && echo $x; done
Bu komutu kullanın:
gzgrep -c $ filename.gz
Komut gzip sıkıştırılmış dosyalarda gzgrep
olduğu gibi grep
fakat aynı şekilde davranır . Regex eşleşmesi için anında dosyayı açar.
Bu durumda -c
, komutun eşleşen satır sayısını göstermesini isteyin ve regex $
satırın sonuna eşleşir, böylece her satır veya dosyayla eşleşir.
Nihai sonuç aynıdır gzip -dc filename.gz | grep -c $
.
gzgrep
Solaris dışındaki sistemlerde kullanılabilir?
Kesin bir sayımdan ziyade kaba bir tahminde bulunmanız yeterliyse ve aslında tüm dosyayı ayıklamak veya satır sonları için zgrepable yapmak hem çok uzun sürecektir (şu anda benim durumumdu):
zcat "$file" | head -1000 > 1000-line-sample.txt
ls -ls 1000-line-sample.txt "$file"
bu durumda, yaklaşık satır sayısı, 1000 * (size of $file) / (size of 1000-line-sample)
verileriniz satır başına oldukça homojen olduğu sürece olur.