fiflist 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. #!/usr/bin/env ruby
  2. # fiflist - Find In Files List Lines
  3. # this script iterates over each file returned by `fif`
  4. # and displays each matching line
  5. SEARCH_PATH = ARGV[0]
  6. SEARCH_TERM = ARGV[1]
  7. EXCLUDE_TERM = ARGV[2]
  8. COINCIDENT_TERM = ARGV[3]
  9. USAGE = "USAGE:\n" +
  10. "\tfiflist <path/to/search> <search-term> [ <exclude-term> ] [ <coincident-term> ]\n" +
  11. "DESCRIPTION:\n" +
  12. "\tfind search-term in files displaying each matching line\n"
  13. unless SEARCH_TERM ; print USAGE ; exit ; end ;
  14. def report_matches file , term
  15. lines = `cat #{file} | grep -n "#{term}"`.split "\n"
  16. lines.each { | line | print " #{file}:#{line.sub ':' , ":\n "}\n" }
  17. end
  18. fif_cmd = "fif \"#{SEARCH_PATH}\" \"#{SEARCH_TERM}\" \"#{EXCLUDE_TERM}\""
  19. files = `#{fif_cmd}`.split "\n"
  20. files.each do | file |
  21. print "\nin #{file}:\n"
  22. report_matches file , SEARCH_TERM
  23. report_matches file , COINCIDENT_TERM unless COINCIDENT_TERM.nil?
  24. end