For Programmers: Free Programming Magazines  


Home > Archive > AWK > February 2005 > Question about awk









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 Question about awk
Wolfgang Nolden

2005-02-21, 8:55 am

Hi everybody,

i have a file with this structure:

@/Skripte/CronBlacklist 20.02.2005
# Version 1.1 | # Version 1.0
--
@/Skripte/Checkmailq 20.02.2005
# Version 1.3 | # Version 1.2
--
@/Skripte/Status2HTML 20.02.2005
# Version 1.1 | # Version 1.0
--
@/Skripte/Backup 19.02.2005
# Version 1.6 | # Version 1.5
--
@/Skripte/Checkmailq 18.02.2005
# Version 1.2 | # Version 1.1
--
@/Skripte/IXUS_330 18.02.2005
# Version 1.1 | # Version 1.0
--
@/Skripte/FTP_HOME_UP 17.02.2005
# Version 1.1 | # Version 1.0
--
@/Skripte/Backup 13.02.2005
# Version 1.5 | # Version 1.4
--
@/Skripte/Backup_Banking 13.02.2005
# Version 2.1 | # Version 2.0
--
@/Skripte/Backup_Fotos 13.02.2005
# Version 1.1 | # Version 1.0
--
@/Skripte/DailyBackup 13.02.2005
# Version 1.2 | # Version 1.1
--
@/Skripte/MakeTest-System 13.02.2005
# Version 2.1 | # Version 2.0
--
@/Skripte/Backup 11.02.2005
# Version 1.4 | # Version 1.3
--
@/Skripte/Backup_Banking 11.02.2005
# Version 1.0 | # Version 2.0
--
@/Skripte/Backup 15.01.2005
# Version 1.3 | # Version 1.2
--
@/Skripte/MakeBeispiele2html 01.01.2005
# Version 1.1 | # Version 1.0
--
@/Skripte/MakeTest-System 01.01.2005
# Version 2.0 | # Version 1.1
--
@/Skripte/Wichtige_Dateien 31.12.2004
/etc/avmailgate.acl <
--
@/Skripte/Checkmailq 31.12.2004
# Version 1.1 | # Version 1.0
--
@/Skripte/DailyBackup 31.12.2004
# Version 1.1 | # Version 1.0
--
@/Skripte/MakeTest-System 31.12.2004
# Version 1.1 | # Version 1.0
--
@/Skripte/Backup 28.12.2004
# Version 1.2 | # Version 1.1
--
@/Skripte/Backup 28.12.2004
# Version 1.1 | # Version 1.0

and so on.

I want an output like this:

@TEXT1 Version2.0 <-- Version1.9 , Version1.9 <-- Version1.8
@TEXT2 Version1.4 <-- Version1.3 , Version1.3 <-- Version1.2
@TEXT3 Version1.5 Version1.4 , Version1.4 Version1.3

or

@TEXT1 Version2.0, Version1.9 ,Version1.8
@TEXT2 Version1.4,Version1.3 ,Version1.2
@TEXT3 Version1.5 , Version1.4 , Version1.3

TEXT(X) is /DESTINATION/TO/A/FILE

i tried for the first output

awk -F "/| " '/^@/ {X=$3}
/^# Version/ {print X,$NF"-->"$3}
' /var/log/SkriptLOG | sort |
awk '{day[$1]=$2}
END {for (TRAF in day)print TRAF,day[TRAF]}' | sort

Backup 1.5-->1.6
Backup_Banking 2.0-->2.1
Backup_Fotos 1.0-->1.1
Checkmailq 1.2-->1.3
DailyBackup 1.1-->1.2
FTP_HOME_UP 1.0-->1.1
IXUS_330 1.0-->1.1
MakeTest-System 2.0-->2.1
Status2HTML 1.0-->1.1

But i don't see this

Backup 1.5-->1.6 , 1.4 -->1.5 and so on

Can someone help me?

Thx for reading

Wolfgang
Ed Morton

2005-02-21, 3:57 pm



Wolfgang Nolden wrote:

> Hi everybody,
>
> i have a file with this structure:
>
> @/Skripte/CronBlacklist 20.02.2005
> # Version 1.1 | # Version 1.0
> --
> @/Skripte/Checkmailq 20.02.2005
> # Version 1.3 | # Version 1.2
> --
> @/Skripte/Status2HTML 20.02.2005
> # Version 1.1 | # Version 1.0
> --
> @/Skripte/Backup 19.02.2005
> # Version 1.6 | # Version 1.5
> --

<snip>
> I want an output like this:
>
> @TEXT1 Version2.0 <-- Version1.9 , Version1.9 <-- Version1.8
> @TEXT2 Version1.4 <-- Version1.3 , Version1.3 <-- Version1.2
> @TEXT3 Version1.5 Version1.4 , Version1.4 Version1.3

<snip>
> TEXT(X) is /DESTINATION/TO/A/FILE
>
> i tried for the first output
>
> awk -F "/| " '/^@/ {X=$3}
> /^# Version/ {print X,$NF"-->"$3}
> ' /var/log/SkriptLOG | sort |
> awk '{day[$1]=$2}
> END {for (TRAF in day)print TRAF,day[TRAF]}' | sort


Try this:

awk '
/^@/{split($1,a,"/"); file=a[3]; files[file]=""}
/^# Version/ {v[file]=v[file] sep[file] $2$3 "<--" $6$7;sep[file]=" , "}
END { for (file in files) print file, v[file] }'

If you want the full path to the file, just get rid of the "split" on
the first line - I just put it in because that's what you appear to be
attempting by including "/" in your FS.

If you want the output sorted but want to stay within awk, use "gawk"
and lookup "asort()" and "asorti()" in the user guide.

Regards,

Ed.
Wolfgang Nolden

2005-02-21, 3:57 pm

Hi Ed,

thank you very much for your answer. It is exactly that what i want :-)

Here is the output:

Backup_hda5_Wechselplatte_tar_split Version1.2<--Version1.1
IXUS_330 Version1.1<--Version1.0
Status2HTML Version1.1<--Version1.0
Checkmailq Version1.3<--Version1.2 , Version1.2<--Version1.1 ,
Version1.1<--Version1.0
Backup_Fotos Version1.1<--Version1.0
MakeBeispiele2html Version1.1<--Version1.0
[....]


Thank you very much

Wolfgang
Wolfgang Nolden

2005-02-24, 3:55 pm

Hi Ed,

thank you very much for your answer. It is exactly that what i want :-)

Here is the output:

Backup_hda5_Wechselplatte_tar_split Version1.2<--Version1.1
IXUS_330 Version1.1<--Version1.0
Status2HTML Version1.1<--Version1.0
Checkmailq Version1.3<--Version1.2 , Version1.2<--Version1.1 ,
Version1.1<--Version1.0
Backup_Fotos Version1.1<--Version1.0
MakeBeispiele2html Version1.1<--Version1.0
[....]


Thank you very much

Wolfgang
Sponsored Links







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

Copyright 2008 codecomments.com