1 # 2 # matching the following output specified as a pattern that verifies 3 # that the numerical values conform to a specific pattern, rather than 4 # specific values. 5 # 6 # S0 S1 E O M CCS YGC YGCT FGC FGCT CGC CGCT GCT LGCC GCC 7 # 0.00 0.00 0.00 9.97 90.94 87.70 2 0.013 0 0.000 0 0.000 0.013 Allocation Failure No GC 8 9 10 BEGIN { 11 headerlines=0; datalines=0; totallines=0 12 } 13 14 /^ S0 S1 E O M CCS YGC YGCT FGC FGCT CGC CGCT GCT LGCC GCC $/ { 15 headerlines++; 16 } 17 18 # The following pattern does not verify the validity of the gc cause 19 # string as the values can vary depending on conditions out of our 20 # control. To accomodate this variability, the pattern matcher simply 21 # detects that there are two strings that match a specific pattern 22 # where the first character is a letter followed by a sequence of zero 23 # or more letters and spaces. It also provides for the ".", "(", and ")" 24 # characters to allow for the string "System.gc()". 25 # 26 /^[ ]*[0-9]+\.[0-9]+[ ]*[0-9]+\.[0-9]+[ ]*[0-9]+\.[0-9]+[ ]*[0-9]+\.[0-9]+[ ]*[0-9]+\.[0-9]+[ ]*([0-9]+\.[0-9]+)|-[ ]*[0-9]+[ ]*[0-9]+\.[0-9]+[ ]*[0-9]+[ ]*[0-9]+\.[0-9]+[ ]*[0-9]+\.[0-9]+[ ]*[a-zA-Z]+[a-zA-Z \.\(\)]*[ ]*[a-zA-Z]+[a-zA-Z \.\(\)]*$/ { 27 datalines++; 28 } 29 30 { totallines++; print $0 } 31 32 END { 33 if ((headerlines == 1) && (datalines == 1)) { 34 exit 0 35 } 36 else { 37 exit 1 38 } 39 }