#!/bin/csh -f
# changes pattern1 to pattern2 in file(s)
# usage: SED pattern1 pattern2 file(s)
#

if ($#argv < 3) then
 echo "usage: $0 [-tree] pattern1 pattern2 file(s)"
 exit
endif
set flag = `echo x$1 | cut -c2-2`    # auf "-" ist schwer abfragen!
if ("$flag" == '-') then
 set lang = `echo x$1 | wc -c`
 set flag = `echo x$1 | cut -c3-$lang`
 shift argv
endif
set pattern1 = "$1"
set pattern2 = "$2"
shift argv
shift argv
if ($flag == "tree") then
 set files = `ls -R | grep -v :$ | grep $argv[*]`
else
 set files = `ls $argv[*]`
endif

ls -l $files |& grep 'No match' >& /dev/null
if ($status == 0) then
 echo 'No match'
 exit
endif

set neuer_File = "/tmp/sed.$$"

if (-e $neuer_File) rm $neuer_File
foreach file (`echo $files`)
 grep "$pattern1" $file >& /dev/null
 if ($status == 0) then
  set user = `ls -l $file | awk '{print $3}'`
  set group = `ls -lg $file | awk '{print $4}'`
  sed s+"$pattern1"+"$pattern2"+g $file > $neuer_File
  mv $neuer_File $file
  if ($USER == "root") then
   chown $user $file
   chgrp $group $file
  endif
  chmod 644 $file
 endif
end
