Advertisement
pcwizz

Extract references

Feb 28th, 2015
405
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Awk 0.77 KB | None | 0 0
  1. #!/bin/awk -f
  2. BEGIN {
  3.         FS ="$"
  4. }
  5. {
  6.         n = NF;
  7.         while ( n > 0 ) {
  8.                 if ( $n == "" ) {
  9.                         break;
  10.                 }
  11.                 if ( match($n, /(([[:alpha:]]\w*)|([[:digit:]]+))/) > 0 && ( $(n-1) !~ /\'$/i || n-1 == 0 ) ) {
  12.                         #find char position of reference relative to line (record).
  13.                         i = 1;
  14.                         c = 1; #counter for $ in line ($0)
  15.                         while ( c != n) {
  16.                                 if  ( substr($0, i, 1) == "$" ) {
  17.                                         c++;   
  18.                                 }
  19.                                 i++;
  20.                         }
  21.                         #output the match string line position and line number
  22.                         if ( ( i - 2 > 0 && substr($0, i - 2, 2) ~ /^[^\$]\$$/ ) ) {
  23.                                 print substr($n, RSTART, RLENGTH), i, NR;
  24.                         } else if ( (i - 2 == 0 && substr($0, i-1, 1) == "$" ) ){
  25.                                 print substr($n, RSTART, RLENGTH), i, NR;  
  26.                         }
  27.                 }
  28.                 n--;
  29.         }
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement