1# $Id: dbname.awk,v 12.1 2005/03/23 04:56:51 ubell Exp $ 2# 3# Take a comma-separated list of database names and spit out all the 4# log records that affect those databases. 5 6NR == 1 { 7 nfiles = 0 8 while ((ndx = index(DBNAME, ",")) != 0) { 9 filenames[nfiles] = substr(DBNAME, 1, ndx - 1) 0; 10 DBNAME = substr(DBNAME, ndx + 1, length(DBNAME) - ndx); 11 files[nfiles] = -1 12 nfiles++ 13 } 14 filenames[nfiles] = DBNAME 0; 15 files[nfiles] = -1 16 myfile = -1; 17 nreg = 0; 18} 19 20/^\[.*dbreg_register/ { 21 register = 1; 22} 23/opcode:/ { 24 if (register == 1) { 25 if ($2 == 1) 26 register = 3; 27 else 28 register = $2; 29 } 30} 31/name:/ { 32 if (register >= 2) { 33 myfile = -2; 34 for (i = 0; i <= nfiles; i++) { 35 if ($2 == filenames[i]) { 36 if (register == 2) { 37 printme = 0; 38 myfile = -2; 39 } else { 40 myfile = i; 41 } 42 break; 43 } 44 } 45 } 46 register = 0; 47} 48/fileid:/{ 49 if (myfile == -2) 50 files[$2] = 0; 51 else if (myfile != -1) { 52 files[$2] = 1; 53 if ($2 > nreg) 54 nreg = $2; 55 printme = 1; 56 register = 0; 57 myfile = -1; 58 } else if ($2 <= nreg && files[$2] == 1) { 59 printme = 1 60 } 61 myfile = -1; 62} 63 64/^\[/{ 65 if (printme == 1) { 66 printf("%s\n", rec); 67 printme = 0 68 } 69 rec = ""; 70 71 rec = $0 72} 73 74TXN == 1 && /txn_regop/ {printme = 1} 75/^ /{ 76 rec = sprintf("%s\n%s", rec, $0); 77} 78 79END { 80 if (printme == 1) 81 printf("%s\n", rec); 82} 83