URL
https://opencores.org/ocsvn/or1k_old/or1k_old/trunk
Subversion Repositories or1k_old
[/] [or1k_old/] [trunk/] [rtems-20020807/] [doc/] [tools/] [word-replace2] - Rev 1782
Compare with Previous | Blame | View Log
#!/usr/bin/perl## word-replace2,v 1.4 2002/01/17 21:47:47 joel Exp#eval "exec /usr/local/bin/perl -S $0 $*"if $running_under_some_shell;require 'getopts.pl';&Getopts("p:vh"); # help, pattern file, verbose,if ($opt_h || ! $opt_p) {print STDERR <<NO_MORE_HELP;word-replace2Replace *words* with patterns. Pattern file specifies which patternsto replace on each line. All patterns are wrapped with perl \\b regexpspecifiers.Usage: $0 [-v] -p pattern-file files to replace-v -- possibly more verbose-p file -- pattern file-h -- helpanything else == this help messagePattern file looks like this:# Example:# ignores all lines with beginning with # or not exactly 2 fields_Dorky_Name rtems_dorky_name # comments, and blank lines are cool_Dorky_Name2 rtems_dorky_name2 # comments, and blank lines are coolNO_MORE_HELPexit 0;}$verbose = $opt_v;$pattern_file = $opt_p;# make standard outputs unbuffered (so the '.'s come out ok)$oldfh = select(STDERR); $| = 1; select($oldfh);$oldfh = select(STDOUT); $| = 1; select($oldfh);# pull in the patternsopen(PATTERNS, "<$pattern_file") ||die "could not open $pattern_file: $!, crapped out at";foreach (<PATTERNS>){chop;s/#.*//;next if /^$/;($orig, $new, $junk, @rest) = split;next if ( ! $orig || ! $new || $junk); # <2 or >2 patternsdie "pattern appears 2x: '$orig' in '$pattern_file'--" if defined($patterns{$orig});$patterns{$orig} = $new;}close PATTERNS;# walk thru each line in each file$infile = '-' ;$outfile = '-' ;if ( $#ARGV > -1 ){$infile = "@ARGV[0]" ;shift @ARGV ;}if ( $#ARGV > -1 ){$outfile = "@ARGV[0]" ;shift @ARGV ;}open (INFILE, "<$infile") ||die "could not open input file $infile: $!";$line = join('',<INFILE>) ;close INFILE;print STDERR "$outfile\t";open (OUTFILE, ">$outfile") ||die "could not open output file $outfile: $!";foreach $key (keys %patterns){if ( $line =~ s/\b$key\b/$patterns{$key}/ge ){print STDERR "." ;}}print OUTFILE $line ;print STDERR "\n";close OUTFILE;
