Simpler Navigation for Servers and Operating Systems - Please Update Your Bookmarks
Completed: a much simpler Servers and Operating Systems section of the Community. We combined many of the older boards, so you won't have to click through so many levels to get at the information you need. Check the consolidated boards here as many sub-forums are now single boards.
If you have bookmarked forums or discussion boards in Servers and Operating Systems, we suggest you check and update them as needed.
cancel
Showing results for 
Search instead for 
Did you mean: 

Uniq entries needed...

Highlighted
Allanm
Super Advisor

Uniq entries needed...

Hi All,

I have the following command which returns the output like this -

wget URL|grep hostname|awk '{print $1,$3}'|/usr/bin/perl -nle 'm{"(.*?)".*?//(.*):(\d+)/} and print "$1 $2 $3"'|while read host port
do
echo check_env_$port
echo host
done

OUTPUT
Appname hostname port
Appname2 hostname port2 ...

Appnames are all unique , while hostname is not since I am grepping for single hostname(vip).
Some of the ports are not unique so I am getting the same port for 4-5 different appnames.

Within the same snippet of code I want to add a number to echo command so the its unique..
e.g. check_env_1_1234
check_env_2_1234

So for port 1234 it should increment the numbers.

If that's too hard then atleast get unique entries so that I don't get check_env_1234 not more than once which ever comes first and ignore the rest of the entries with the same port.

Thanks,
Allan.
2 REPLIES
James R. Ferguson
Acclaimed Contributor

Re: Uniq entries needed...

Hi Allan:

One solution is to sort your output before your 'while read...' loop. Then, in the body of the loop, compare and increment a variable whose value becomes the count of the port instance.

Regards!

...JRF...
James R. Ferguson
Acclaimed Contributor

Re: Uniq entries needed...

Hi (again) Allan:

...and I scanned right past this:

> If that's too hard then atleast get unique entries so that I don't get check_env_1234 not more than once which ever comes first and ignore the rest of the entries with the same port.

OK, so, use a 'sort -u' :

# wget ... | sort -u -k3,3 | while read ...

Regards!

...JRF...