#! /usr/bin/env perl use strict; use warnings; # tr -d '\r' < filename | ./processChrome.pl # anything matching these keys will be include, and all else # will be excluded. If empty, will include everything not # matching $ignoreKeys. In this case, we've commented out # everything, so it will output everything not ignored my %lookFor = ( # 'div-bios-info-value' => 'bios_info', # 'div-blkid-value' => 'blkid', # 'div-cpuinfo-value' => 'cpuinfo', # 'div-disk-usage-value' => 'disk_usage', # 'div-ifconfig-value' => 'ifconfig', # 'div-lsblk-value' => 'lsblk', # 'div-meminfo-value' => 'meminfo', # 'div-network-devices-value' => 'network_devices', # 'div-os-release-NAME-value' => 'os-release NAME', # 'div-os-release-VERSION-value' => 'os-release VERSION', # 'div-uname-value' => 'uname', # 'div-vpd-2-0-value' => 'vpd_2.0' ); # anything matching this regex will be ignored # this matches anything with log, profile or ui-heirarchy in # the key. NOTE: match is case insensitive my $ignoreRegex = qr'.*(log)|(profile)|(ui-hierarchy).*'i; # get a single line. This is more difficult since the output # takes very long lines and separates them into 80 column blocks # the indicator for this continuation is an equals sign (=) # at the end of the line. Thus, we continue to read lines from # STDIN so long as the current line ends with an equal sign # and we concatinate all of the lines together sub getLine { my @lines; while ( my $thisLine = <> ) { chomp $thisLine; if ( substr( $thisLine, -1 ) eq '=' ) { #die "$thisLine\n"; chop $thisLine; # remove the equals sign push @lines, $thisLine; } else { push @lines, $thisLine; #print "returning\n$thisLine\n"; return join( '', @lines ) . "\n"; } } } # makes a category name from the div name sub makeCategory { my $initValue = shift; $initValue =~ m/div-(.*)-value/; $initValue = $1; $initValue =~ s/-/ /g; return $initValue; } my %found; my $line; my $count = 100; my $category = ''; while ( $line = &getLine() ) { #print "$line\n"; #die unless $count--; $line =~ s/=3D/=/gi; # Ok, if we have a category already, and have found a , clear the category $category = '' if $category && $line =~ m""; # check for a line like