For Programmers: Free Programming Magazines  


Home > Archive > AWK > February 2005 > Compare, remove duplicates, print to new file









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Compare, remove duplicates, print to new file
djbabin@gmail.com

2005-02-04, 3:55 pm

I have 1 file, backups.txt, with the following content:

successful backup for server1
successful backup for server2
successful backup for server3
successful backup for server4
no full backup for server1
no full backup for server2
no full backup for server5
no full backup for server6
no incr backup for server3
no incr backup for server4
no incr backup for server5
no incr backup for server6

I am using gawk on Windows. I would like to generate a file
identifying which servers were successfully backed up, and which were
not backed up. The results for the above file should be:

successful backup for server1
successful backup for server2
successful backup for server3
successful backup for server4
no backup for server5
no backup for server6

Thanks in advance for any help.

William James

2005-02-04, 8:55 pm


z /^successful/ { succ[$NF]=1 }
z /^no .*backup/ {
z if (!($NF in succ)) nosucc[$NF]=1 }
z END {
z for (k in succ)
z print "successful backup for", k
z for (k in nosucc)
z print "no backup for", k
z }

Ed Morton

2005-02-04, 8:55 pm



djbabin@gmail.com wrote:
> I have 1 file, backups.txt, with the following content:
>
> successful backup for server1
> successful backup for server2

<snip>
> no incr backup for server5
> no incr backup for server6
>
> I am using gawk on Windows. I would like to generate a file
> identifying which servers were successfully backed up, and which were
> not backed up. The results for the above file should be:
>
> successful backup for server1
> successful backup for server2
> successful backup for server3
> successful backup for server4
> no backup for server5
> no backup for server6
>
> Thanks in advance for any help.
>


gawk '/^successful/{succ[$4]=""}
{srvrs[$4]=""}
END{ for (srvr in srvrs)
if (srvr in succ)
printf "successful backup for %s\n",srvr
else
printf "no backup for %s\n",srvr
}' backups.txt

If you care about order, set the WHINY_USERS environment flag before
executing or pipe the output to sort.

Regards,

Ed.
djbabin@gmail.com

2005-02-04, 8:55 pm

This worked for me. Thanks!

Now how do I get the output sorted in alphabetical order by servername?

Darrin

Buck Turgidson

2005-02-04, 8:55 pm

On my W2000 machine, I have a sort command. You can check and see if your
Windoze has it .

X:\>type states
new york
mass
calif

X:\>sort states
calif
mass
new york


<djbabin@gmail.com> wrote in message
news:1107548599.801691.284350@g14g2000cwa.googlegroups.com...
> This worked for me. Thanks!
>
> Now how do I get the output sorted in alphabetical order by servername?
>
> Darrin
>



djbabin@gmail.com

2005-02-04, 8:55 pm

Yes, I am running Win2K. sort worked just fine. Problem totally
solved. Thanks everyone!

Ed Morton

2005-02-04, 8:55 pm



djbabin@gmail.com wrote:
> This worked for me. Thanks!
>
> Now how do I get the output sorted in alphabetical order by servername?
>
> Darrin
>


Like I said, set "WHINY_USERS" in your environment. e.g. in UNIX given
this input file:

successful backup for server1
successful backup for server5
successful backup for server3
successful backup for server4
no full backup for server1
no full backup for server2
no full backup for server5
no full backup for server6
no incr backup for server3
no incr backup for server4
no incr backup for server5
no incr backup for server6

and this script:

gawk '{srvr=$5}
/^successful/{srvr=$4;succ[srvr]=""}
{srvrs[srvr]=""}
END{ for (srvr in srvrs)
if (srvr in succ)
printf "successful backup for %s\n",srvr
else
printf "no backup for %s\n",srvr
}' backup.txt

I get this output by default:

no backup for server2
successful backup for server3
successful backup for server4
successful backup for server5
no backup for server6
successful backup for server1

But if I do this:

export WHINY_USERS=1

and THEN invoke the script, then the output is:

successful backup for server1
no backup for server2
successful backup for server3
successful backup for server4
successful backup for server5
no backup for server6

Perhaps you thought I was joking about "WHINY_USERS" - it does seem an
unlikely name!

Ed.
djbabin@gmail.com

2005-02-07, 8:56 pm

Unfortunately, I'm running this on a Windows 2000 desktop, so I can't
run WHINY_USERS. Gotta love that name, though! Thanks for the help.

Kenny McCormack

2005-02-07, 8:56 pm

In article <1107784129.227622.127760@o13g2000cwo.googlegroups.com>,
<djbabin@gmail.com> wrote:
>Unfortunately, I'm running this on a Windows 2000 desktop, so I can't
>run WHINY_USERS. Gotta love that name, though! Thanks for the help.


Why not?

Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com