Dosyada her satırın kaç kez göründüğünü sayma


23

Diyelim ki içeren bir dosyam var:

A
A
A
B
CC

Çıktının böyle olmasını istiyorum:

A 3
B 1
CC 1

Yanıtlar:


23

Bunu anladım; biri uniqbireyin seçenekleri olan -c'oluş sayısına göre önek hatları',:

$ uniq -c

1
Önce sayıları koyduğunuzu unutmayın. Sipariş hakkında telaşlı olsaydı, yapabileceğini:uniq -c filename.txt | sed 's/[^0-9]*\\([0-9]\+\\) \\(.*\\)/\2 \1/'
frabjous

12
Ayrıca, yalnızca bitişik tekrarlayan satırları saydığını unutmayın. Ortak bir deyimsort | uniq
Steven D

4
uniq, sayımı datumun önüne da koyar. Asıl soru aslında şunun gibi bir şeye ihtiyaç duyar: sort dosyaadı | uniq -c | awk '{2 $, 1 $} yazdırın'
Bruce Ediger

Yukarıdaki yorumlardan anlaşılmadığı takdirde , amacınıza ulaşmak için önce verilerin sıralandığından emin olmalısınız . Sıralanmamışsa tekrar girişleriniz olur. Örneğin, orijinal dosyanız bunun yerine olsaydı A \ A \ A \ B \ A \ CC, sadece çıktısını uniq -cgösterir A 3ve sonra gösterirdi A 1. Önce sıralama, tüm özdeş satırların birlikte gruplandırılmasını garanti eder
drootang

16

Buraya benzer bir problemle geldim. Bundan biraz daha ileri bir komutu bir araya getirmeyi başardım, umarım diğerleri için faydalıdır.

Steven D'nin yukarıdaki açıklamalarda dediği gibi, uniqsadece bitişik tekrarlayan satırları sayar, bu yüzden önce satırları sıralamanız gerekir. Ondan sonra benzersiz çizgileri bulduktan sonra tekrar sıralayın, böylece en çok ortaya çıkan çizgiler en üsttedir.

sort file.txt | uniq -c | sort -nr > output.txt

Çıktı dosyaya yönlendirilir output.txt. Sonuçları komut satırında görmek istiyorsanız, yönlendirmeyi kaldırın ve en son sort -nsatırın en alt satırda, yani kesinlikle ekranda olacak şekilde son komutu değiştirin .


4
Sen yerini alabilir cat file.txt | sortsadece birlikte sort file.txt. :)
mattdm 7:11

1
@ mattdm: Bu formülasyonun dezavantajı, catdaha ilginç bir şeyle hızlıca değiştiremeyeceğinizdir . Bilirsin, biliyorsun, hayır yok cat.
SamB

1
@SamB Sonra yazın < file.txt sort | uniq -c. Bu düzenlemesi kolaydır ve gereksiz olanı engeller cat.
HVD
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.