SORU
19 Aralık 2008, Cuma


En iyi " taklit yolu;grup" bash?

IP adreslerini içeren bir dosya olduğunu varsayalım, her satırda: bir adres

10.0.10.1
10.0.10.1
10.0.10.3
10.0.10.2
10.0.10.1

Dosyada görünür, nasıl her IP adresi için önemli olan bir kabuk gerekir. Önceki giriş için aşağıdaki çıktıyı gerekir:

10.0.10.1 3
10.0.10.2 1
10.0.10.3 1

Bunu yapmak için bir yoldur:

cat ip_addresses |uniq |while read ip
do
    echo -n $ip" "
    grep -c $ip ip_addresses
done

Ancak gerçekten çok verimli olmaktan.

Bu sorunu nasıl daha verimli bash kullanarak çözmek ister misin?

(Eklemek için bir şey var: perl veya awk çözülmüş olabilir biliyorum, bu dillerde bash daha iyi bir çözüm, ilgilenmiyorum.)

EK BİLGİ:

Kaynak dosya 5 GB ve makine algoritması çalışan 4 GB olduğunu varsayalım. Sıralama verimli bir çözüm değildir, ne de birden fazla dosyayı okuyor.

Karma tablo gibi çözümü sevdim - bunu herkes çözüm için iyileştirmeler sağlayabilir?

EK BİLGİ #2:

Bazı insanlar neden daha kolay olduğunda bash tenezzül ki örneğin perl istedi. Nedeni makinede benim için mevcut değildi bu perl yapmak zorunda kaldım. Alıştım araçlarının çoğu olmadan özel inşa edilmiş bir linux makine oldu. Ve ilginç bir sorun olduğunu düşünüyorum.

Bu yüzden lütfen, eğer hoşuna gitmedi diye soru suçlama, görmezden gelme. :-)

CEVAP
19 Aralık 2008, Cuma


sort ip_addresses | uniq -c

Bu sayısı İlk Baskı olacak, ama onun dışında ne istediğini tam olarak olmalıdır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GWTLecturer

    GWTLecturer

    18 EKİM 2012
  • Menglong Tav

    Menglong Tav

    18 Temmuz 2010
  • TechnoBuffalo

    TechnoBuffal

    8 HAZİRAN 2007