#! /usr/bin/gawk 
BEGIN {
      while( getline < ARGV[1] ) {
	realline[$1] = $2
	realfile[$1] = $3
      }
}
/(^Warning)|(^Error)/ {
  if( 0 != match( $0, "on line [0-9]+") ) {
    matstr = substr( $0, RSTART, RLENGTH );
    split( matstr, arr );
    line   = arr[3];
    astr   = substr( $0, 1, RSTART-1 );
    bstr   = substr( $0, RSTART+RLENGTH)
    if( match( bstr, "'$2'") ) {
      cstr = bstr
      bstr = substr(cstr, 1, RSTART-1) "" realfile[line] "" \
             substr( cstr, RSTART+RLENGTH)
    }
    printf "%son line %d%s\n", astr, realline[line], bstr
  } else
    print $0 
  next
}
/ARGV[2]/ {
  match( $0, ARGV[2]) 
  bstr = substr($0, 1, RSTART-1) ARGV[3] \
         substr( cstr, RSTART+RLENGTH)
  print bstr
  next	 
}

{   print $0 
}
'
	

