Groby Computers Ltd - Leicester

Oracle Database Administration

Useful Stuff Oracle Scripts Unix Scripts
#!/bin/ksh
#--------------------------------------------------------------------------------
# File:    dos3unix
# Purpose: Remove the UTF-8 Byte Order Mark and Windows style carriage-returns
# Usage:   dos3unix file [file ...]
# Notes:   The orignal file is preserved as file- (i.e. with a hyphen appended)
#--------------------------------------------------------------------------------
 
  alias doit='true'
 
  while getopts n name
  do
    case $name in
      n)  alias doit='false';;
      *)  cat << eof
dos3unix: Usage
# dos3unix [-n] file [file...]
  -n  check and report only, no changes made
eof
exit 1 ;;
    esac
  done
  shift $(($OPTIND -1))
 
  for f in "$@"
  do
 
    ty=$( file -b "$f" )
    n=$( grep -cP '\r$' "$f" )
    f3=$( sed '/./q' "$f" | cut -c1-3 )
    f32=$( sed '/./q' "$f" | cut -c1-3 | tr -d '\357\273\277' )
 
    if [[ "$f3" != "$f32" && "$n" == "0" ]]
    then
 
      doit && mv "$f" "${f}-"
      doit && tr -d '\357\273\277' < "${f}-" > "$f"
      echo "$f: unBOM: $ty"
 
    elif [[ "$f3" != "$f32" ]]
    then
 
      doit && mv "$f" "${f}-"
      doit && tr -d '\357\273\277' < "${f}-" | sed 's/\r$//' > "$f"
      echo "$f: dos2unix-unBOM: $ty"
 
    elif [[ "$n" == "0" ]]
    then
 
      echo "$f: $ty"
 
    else
 
      doit && mv "$f" "${f}-"
      doit && sed 's/\r$//' < "${f}-" > "$f"
      echo "$f: dos2unix: $ty"
 
    fi
 
  done
 
# End-of-file dos3unix
  
Page Updated Wed Oct 19 21:05:56 BST 2011