Sed/Awk help!!!
Ed Wilts
ewilts at ewilts.org
Thu Dec 29 19:27:22 UTC 2005
On Thu, Dec 29, 2005 at 11:15:04AM -0500, Tom Callahan wrote:
> I'm trying to parse a certain section from an html file, but cannot figure out how to.
>
> The section I am looking at is below:
>
> <----------START FILE---------------------->
> cfg: tab_config_1
> tab_bernstein_tape_zone; tab_bernstein_zone;
> tab_bud_tape_zone; tab_bud_zone; tab_capone_tape_zone;
> tab_capone_zone; tab_dev9ias_tape_zone; tab_dev9ias_zone;
> tab_devdb_tape_zone; tab_devdb_zone; tab_devecom_tape_zone;
> tab_devecom_zone; tab_devhttp_tape_zone; tab_devhttp_zone;
> tab_ecom_tape_zone; tab_ecom_zone; tab_oesdev_tape_zone;
> tab_oesdev_zone; tab_oraprod1_tape_zone; tab_oraprod1_zone;
> tab_sanapp_zone; tab_tahoe_tape_zone; tab_tahoe_zone;
> tab_wmsa_tape_zone; tab_wmsa_zone; tab_wmsdev_tape_zone;
> tab_wmsdev_zone; tab_citius_tape_zone; tab_citius_zone;
> red1_tape_z1; red1_tape_z2; red1_z1; red1_z2; red2_tape_z2;
> red2_z2; blue1_tape_z1; blue1_tape_z2; blue1_z1; blue1_z2;
> blue2_tape_z1; blue2_tape_z2; blue2_z1; blue2_z2;
> yellow1_tape_z1; yellow1_tape_z2; yellow1_z1; yellow1_z2;
> yellow2_tape_z1; yellow2_tape_z2; yellow2_z1; yellow2_z2;
> tab_dl140a_tape_z1; tab_dl140a_z1; tab_dl380a_1_tape_z1;
> tab_dl380a_1_z1
> cfg: tab_test_1
> tab_devhttp_zone; tab_devhttp_tape_zone; tab_devecom_zone;
> tab_devecom_tape_zone; tab_devdb_zone; tab_devdb_tape_zone;
> tab_dev9ias_zone; tab_dev9ias_tape_zone; tab_citius_zone;
> tab_citius_tape_zone; tab_capone_zone; tab_capone_tape_zone;
> tab_bud_zone; tab_bud_tape_zone; tab_bernstein_zone;
> tab_bernstein_tape_zone; tab_dl380a_1_tape_z1;
> tab_dl380a_1_z1; tab_ecom_tape_zone; tab_ecom_zone;
> tab_oesdev_tape_zone; tab_oesdev_zone; tab_oraprod1_tape_zone;
> tab_oraprod1_zone; tab_sanapp_zone; tab_tahoe_tape_zone;
> tab_tahoe_zone; tab_wmsa_tape_zone; tab_wmsa_zone;
> tab_wmsdev_zone; tab_wmsdev_tape_zone; red1_tape_z1;
> red1_tape_z2; red1_z1; red1_z2; red2_tape_z2; red2_z2;
> blue1_tape_z1; blue1_tape_z2; blue1_z1; blue1_z2;
> blue2_tape_z1; blue2_tape_z2; blue2_z1; blue2_z2;
> yellow1_tape_z1; yellow1_tape_z2; yellow1_z1; yellow1_z2;
> yellow2_tape_z1; yellow2_tape_z2; yellow2_z1; yellow2_z2
> <---------------END FILE--------------------->
>
> What I want is to be able to only grab the section from "cfg: tab_config_1 " to just before the next "cfg:" and ignore everything else in the file.
How about:
[ewilts at pe400 ~]$ cat foo.awk
/cfg/ {
variable = $2
print ("variable="variable)
}
$1!~/cfg/ {
print ("appending to " variable)
vararray[variable] = (vararray[variable] $0)
}
END {
print "wrapping up and dumping array"
for (i in vararray) {
print "\n",i,":"
print vararray[i]
}
}
What this does is assign each variable to an array element and
concatenate the list below it. So you'll have one vararray[tab_config_1]
and one for vararray[tab_test_1].
This should give you the general approach.
Cheers,
.../Ed
p.s. you made me work for that one!
--
Ed Wilts, RHCE
Mounds View, MN, USA
mailto:ewilts at ewilts.org
Member #1, Red Hat Community Ambassador Program
More information about the redhat-list
mailing list