dmidecode | perl -le '$o = qr/[^\n]+\n[^\n]+/; $a = join "", <STDIN>;
+$a =~ s/(Socket Designation: RAM($o)Bank($o)Current($o)Type($o)Instal
+led Size: \d[^\n]+\n)/print $1/smge'
There has GOT to be a better way to get the following block of text out of dmidecode...
Socket Designation: RAM socket #0
Bank Connections: 0
Current Speed: Unknown
Type: EDO DIMM
Installed Size: 8192 MB (Single-bank Connection)
...while avoiding these "Not Installed" ones:
Socket Designation: RAM socket #3
Bank Connections: 3
Current Speed: Unknown
Type: DIMM
Installed Size: Not Installed
Enabled Size: Not Installed
Error Status: OK
While I try to come up with a better regex that isn't so dang ugly, do you have any suggestions on improving it?
Update
Somewhat less ugly:
dmidecode | perl -le '$o = qr/[^\n]+\n[^\n]+/; $a = join "", <STDIN>;
+$a =~ s/(Socket Designation: RAM($o){4}Installed Size: \d[^\n]+\n)/pr
+int $1/smge'
Update #2
OK, this seems to be working on both VMware and physical... for future reference. Thanks goes out to everyone who pitched in. This is a big step forward.
dmidecode | perl -e 'undef $/; for ( split /(?<=\n)\n+/, <> ) { print
+if /RAM socket|Memory Device/ && !/(Not|No Module) Installed/ }'
--
Tommy
$ perl -MMIME::Base64 -e 'print decode_base64 "YWNlQHRvbW15YnV0bGVyLm1lCg=="'
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.