home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: alt.sources
- From: michaelp@dadla.WR.TEK.COM (Michael Prusynski)
- Subject: [comp.unix.shell] file conversion (was Re: How to strip edit characters)
- Message-ID: <1990Oct18.173851.17764@math.lsa.umich.edu>
- Date: Thu, 18 Oct 90 17:38:51 GMT
-
- Archive-name: cnvt/17-Oct-90
- Original-posting-by: michaelp@dadla.WR.TEK.COM (Michael Prusynski)
- Original-subject: file conversion (was Re: How to strip edit characters)
- Reposted-by: emv@math.lsa.umich.edu (Edward Vielmetti)
-
- [Reposted from comp.unix.shell.
- Comments on this service to emv@math.lsa.umich.edu (Edward Vielmetti).]
-
-
- With the recent discussion on stripping ^H and ^M etc. from files,
- I thought I'd contribute my general purpose "cnvt" shell script.
- Bill Pfiefer was the originator of this program, but I've modified it
- and added to it quite a bit. The "delbs" function is for nroff output,
- and also deletes the underscore or bold character. b2ul is not guaranteed.
- The type of conversion you want must be the first argument.
- ---------- cut here -----------
- : cnvt - Michael Prusynski - July,1987
- PATH=/bin:$PATH
- usage="usage: cnvt {addcr,delbs,delcr,delff,b2u,cr2lf,lf2cr,indent,sp2tab} file ..."
- case $# in
- 0|1)
- echo 'convert file contents by one of the following methods:
- addcr - adds a carriage return in front of every line feed
- delbs - deletes backspaces and bold or underline characters
- delcr - deletes carriage returns from file
- delff - deletes form feeds from file
- b2ul - converts boldface text in nroff output to underlined
- cr2lf - converts carriage returns to line feeds
- lf2cr - converts line feeds to carriage returns
- indent - indents text 5 spaces
- sp2tab - converts spaces to tabs via "unexpand"'
- echo $usage; exit 1;;
- esac
-
- function=$1
- shift
-
- for x do
- if test ! -f $x; then
- echo "$x: not a file"
- else
- case $function in
- addcr) sed s/$/
- delcr) tr -d '\015' <$x >$x.$$;;
- delff) tr -d '\014' <$x >$x.$$;;
- cr2lf) tr '\015' '\012' <$x >$x.$$;;
- lf2cr) tr '\012' '\015' <$x >$x.$$;;
- b2ul) sed -e '/\.\.\./s//\_/g' $x >$x.$$;;
- delbs) sed s/_//g $x | sed s/.//g >$x.$$;;
- dblsp) sed "s:$::" $x | tr "\001" "\012" >$x.$$;;
- indent) sed '/./s/^/ /' $x >$x.$$;;
- sp2tab) unexpand -a <$x >$x.$$;;
- *) echo $usage; exit 1;;
- esac
- test -n $x.$$ && mv $x.$$ $x
- fi
- done
-