Προς το περιεχόμενο

Unix ερώτηση


iNfErNeR

Προτεινόμενες αναρτήσεις

Δημοσ.

Έχω διαφορα αρχεία τα οποια συμπεριλαμβάνουν 4 στήλες με format ip day month year πχ 111.111.01.2 Mon Jun 2008. Οι λίστες έχουν περίπου 100 σειρές με στοιχεια που επαναλαμβάνονται όπως το ip. Εγώ θέλω να βρω την ip που έχει εμφανιστεί τις περισσότερες φορες στο κάθε αρχείο.

 

> awk ' { print $1 }' filename | sort 

 

Βλέπω τις ip που επαναλαμβάνονται τις περισσότερες φορες αλλα δεν ξέρω πως μπορώ να επιλέξω μονο τις συγκεριμένες ip.

 

Οποιαδήποτε βοήθεια ευπρόσδεχτη :-)

Δημοσ.

Δεν ξέρω εάν θέλεις να λύσεις το πρόβλημα σου μόνο με awk, αλλά με το παρακάτω bash script κάνεις την δουλειά σου:

 

>
#!/bin/bash

IPADDRESSES=`awk ' { print $1 }' filename | sort`

for i in $IPADDRESSES; do
   count=0
   if [ "$i" = "$LASTIPADDRESS" ];
   then
       continue;
   fi
   for j in $IPADDRESSES; do
       if [ "$i" = "$j" ];
then
    count=`expr $count + 1`
fi
   done
   LASTIPADDRESS=$i
   echo "ipaddress $i repeated $count times"
done

 

Υ. Γ.: Τώρα που είδα κάλυτερα την εκφώνηση, το παραπάνω bash script δεν σου λύνει ακριβώς το πρόβλημα σου. Απλά σου μετράει τις συχνότητες των ip addresses σε ένα αρχείο. Οπότε:

 

>
#!/bin/bash

IPADDRESSES=`awk ' { print $1 }' filename | sort`
first_time=true
for i in $IPADDRESSES; do
   count=0
   if [ "$i" = "$LASTIPADDRESS" ];
   then
       continue;
   fi
   for j in $IPADDRESSES; do
       if [ "$i" = "$j" ];
then
    count=`expr $count + 1`
fi
   done
   LASTIPADDRESS=$i
#    echo "ipaddress $i repeated $count times"

   if [ "$first_time" = "true" ];
   then
       first_time=false
max_count=$count
max_ipaddress=$i
   else
       if [ `expr $max_count \< $count` = 1 ];
then
           max_count=$count
    max_ipaddress=$i
fi
   fi
done

echo "ipaddress $max_ipaddress repeated $max_count times"

Δημοσ.

Ευχάριστο πολύ για τις απάντησης σας.

 

pinball_elf το script σου δουλεύει άψογα. Aκριβώς ότι έψαχνα! 1000 ευχαριστώ!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...