• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 776
  • Last Modified:

processing multiple fields in a stanza using awk

Hi,

I've been trying to use awk to process a stanza with the following information;

Handle 0x000D, DMI type 6, 12 bytes.
Memory Module Information
        Socket Designation: DIMM0
        Bank Connections: 0 5
        Current Speed: 160 ns
        Type: DIMM
        Installed Size: 512 MB (Double-bank Connection)
        Enabled Size: 512 MB (Double-bank Connection)
        Error Status: OK

Handle 0x000E, DMI type 6, 12 bytes.
Memory Module Information
        Socket Designation: DIMM1
        Bank Connections: 0 5
        Current Speed: 162 ns
        Type: DIMM
        Installed Size: 512 MB (Double-bank Connection)
        Enabled Size: 512 MB (Double-bank Connection)
        Error Status: OK

I would like to extract the Socket Designation and Installed Size fields to summarise the installed memory and look something like this;

     DIMM0 512 MB
     DIMM1 512 MB

I have attached a code snippet from one of my many failed attempts below.

Is awk the best thing to use for this or would perl be more suited (in which case I won't know where to start!)

Any help greatly apprecisted.

Jools
cat hardware | awk -F: '
BEGIN {
   RS = "^Memory Module Information"
}
   /Socket Designation/ { SDES = $2 }
   /Installed Size/ { ISIZE = $2 }
END {
   printf "%-20s %-20s\n",SDES,ISIZE
   print NR
}'

Open in new window

0
jools
Asked:
jools
1 Solution
 
ozoCommented:
awk '/Socket Designation:/{printf"%-20s",$3}/Installed Size:/{print $3,$4}' < hardware
0
 
joolsAuthor Commented:
Thanks ozo,

Glad to see you're still about.
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now