Groby Computers Ltd - Leicester
Oracle Database Administration
#!/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