![]() |
|
|
|
|
|||||||
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts here. Shell Script Page. |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| how to make a line BLINKING in output and also how to increase font size in output | mail2sant | Shell Programming and Scripting | 3 | 04-14-2008 04:30 AM |
| SU issues | yoi2hot4ya | Shell Programming and Scripting | 1 | 10-09-2007 08:11 AM |
| Tar issues! HELP! | Slaughter | UNIX for Dummies Questions & Answers | 3 | 04-19-2006 09:22 AM |
| AIX 5.3 Issues | miket | AIX | 1 | 04-26-2005 02:12 PM |
| dns issues | rickyt00 | UNIX for Advanced & Expert Users | 1 | 03-22-2005 07:18 PM |
|
|
Submit Tools | LinkBack | Thread Tools | Display Modes |
|
|||
|
Awk output issues.
I have the follwing code:
Code:
awk '{print $1}' HITS #Searches HITS file column one. Column one is filenames
awk '{print $2}' HITS | sort -n | wc -l #Searches HITS file and sorts numerically and outputs line count. column 2 is IP addresses
awk '{print $2}' HITS | uniq | wc -l # Searches HITS file for unique entries and outputs line count. column 2 is IP addresses
like this: Code:
hits/adverts.hits:248.204.125.183 hits/mags.hits:87.114.172.31 hits/adverts.hits:34.220.19.30 hits/food.hits:185.227.145.86 hits/food.hits:213.225.8.140 hits/mags.hits:83.222.98.178 hits/food.hits:118.195.119.35 10345 245 Code:
FILENAME HITS UNIQUE HITS food.hits 2034 245 mags.hits 2000 435 adverts.hits 1456 344 #the hits column needs to also be in a descending order as shown above Last edited by amatuer_lee_3; 05-16-2008 at 01:04 AM. |
| Forum Sponsor | ||
|
|
|
|||
|
Did you know it's spelt 'amateur'?
Some comments regarding your existing code: Code:
awk '{print $1}' HITS
# you need to specify the column separator because awk uses
# white space (spaces/tabs) by default , e.g.
awk -F: '{print $1}' HITS
Code:
awk '{print $2}' HITS | sort -n | wc -l
# no need for awk and sort, as it doesn't change the number of lines of data, just:
wc -l < HITS
Code:
awk '{print $2}' HITS | uniq | wc -l
# if the data is unsorted uniq does not identify matching lines, better to use:
awk -F: '{print $2}' HITS | sort -u | wc -l
Code:
sort -t : -k 1,1 -k 2,2 HITS | awk -F: '
# assign values to variables for readability, count a hit
{ file=$1; ip=$2; hits[file]++ }
# initialise prevfile when reading the first line
NR==1 { prevfile=file }
# if it is a new file, reset the previous IP
file != prevfile { previp="" }
# if the ip is different to the previous IP, count a unique hit
ip != previp { uniquehits[file]++ }
# save previous ip and file name for future reference
{ previp=ip; prevfile=file }
# output the results
END { for (file in hits) { print file,hits[file],uniquehits[file] } }
'
|
|
|||
|
Thanks very much. Yeah i do know its spelt wrong. I noticed after i clicked confirm on my username. just cant be bothered to change it.
can i refer you to my recent post: using uniq and awk?? This gives a better explanation as to what problems i have. This is kind of irrelevant now because i misinterpreted my requirements. But this still does help me. Thanks again. |
|||
| Google UNIX.COM |
| Thread Tools | |
| Display Modes | |
|
|