Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 4 Nov 2001 22:16:42 -0500
From:      Brian T.Schellenberger <bts@babbleon.org>
To:        "David Loszewski" <stealth215@mediaone.net>, <freebsd-questions@FreeBSD.ORG>
Subject:   Re: ^M on end of lines
Message-ID:  <01110422164202.03811@i8k.babbleon.org>
In-Reply-To: <000e01c164e9$4592a300$3000a8c0@sickness>
References:  <000e01c164e9$4592a300$3000a8c0@sickness>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
On Saturday 03 November 2001 23:29, David Loszewski wrote:
> So then how do I strip it of the '^M's then? Lol, this is the biggest
> pain in the ass, and I'm not a complete newbie. 

I'm still trying to get what's different or surprising about this--nothing 
should be any different w/r/t FreeBSD & ^M vs. any other Unix-like O/S.
If something *is* different, you must be using a different editor or capture 
process or *something* than what you used before.

> If I do 'wget' I get the
> same thing sometimes so I'm starting to think that there's something
> wrong with the configs in the system.  Ideas on where I should start
> looking?

I've attached the scripts that I actually use to do this.  Just put both of 
them in a directory that's in your path & you're all set.  I've tossed "all" 
in for good measure; you can use

unmsdos *.* 

to make all of the files "Unixy" or 

all '*.*' 'uncrnl $i'

to just un-cr-nl them.

I'm sure that there are standard utilities to do this, but this is literaly 
what I do.


>
> Dave
>
> -----Original Message-----
> From: Ryan Thompson [mailto:ryan@sasknow.com]
> Sent: Saturday, November 03, 2001 12:54 PM
> To: Brian T.Schellenberger
> Cc: David Loszewski; freebsd-questions@FreeBSD.ORG
> Subject: Re: ^M on end of lines
>
> Brian T.Schellenberger wrote to David Loszewski:
> > On Friday 02 November 2001 19:59, you wrote:
> > > Maybe the question I should be asking instead is, is it normal to
>
> see a
>
> > > crap load of '^M's in a file in FreeBSD?
> >
> > Never happens to me (except with MS-DOS files, and of course that
>
> happens in
>
> > Linux as well).  So something is configured in a screwy way on our
>
> system if
>
> > it's any different from Linux.
> >
> > But here's the deal on FTP, as I understand it:
> >
> > in text mode, FTP uses the MS-DOS conventions (it adds ^Ms), so if you
> > run FTP on Linux in text (ascii) mode but the FTP on FreeBSD in binary
> > mode, then Linux will add the ^Ms and FreeBSD won't strip 'em.
>
> Not the case.. Unless maybe your FTP is broken?
>
> > If you are running *nix-to-*nix, then FTP in binary mode on both ends;
> > if it's a text file you can use text mode on both ends.  Sounds like
> > somehow the FTPs aren't communicating and they are in different modes.
> >
> > Of course that's not supposed to be possible, and I've never seen it,
> > but it sounds like what might be happenening to you anyway.
>
> Actually, what ASCII mode is supposed to do, is, when transferring text
> files, convert to the platform specific text format. (Which really means
> the receiver strips or adds the ^M). This instruction is actually in our
> training manual for new employees developing code on Windows machines
> who
> need to transfer via FTP. USE ASCII MODE FOR ASCII FILES. :-)
>
> - Ryan
>
> > > Dave
> > >
> > >
> > > -----Original Message-----
> > > From: owner-freebsd-questions@FreeBSD.ORG
> > > [mailto:owner-freebsd-questions@FreeBSD.ORG] On Behalf Of undergra
> > > Sent: Friday, November 02, 2001 7:28 PM
> > > To: Andreas Ntaflos; David Loszewski
> > > Cc: freebsd-questions@FreeBSD.ORG
> > > Subject: RE: ^M on end of lines
> > >
> > > tr -d "\015" < input-file > output-file
> > > ----- Mensaje original -----
> > > De: "Andreas Ntaflos" <ntaflos.andreas@gmx.net>
> > > Para: "David Loszewski" <stealth215@mediaone.net>
> > > CC: <freebsd-questions@FreeBSD.ORG>
> > > Enviado: sábado, 03 de noviembre de 2001 0:44
> > > Asunto: Re: ^M on end of lines
> > >
> > > > On Fri, Nov 02, 2001 at 05:43:18PM -0500, David Loszewski wrote:
> > > > > Yea, but then I have to do that to all the files
> > > > > Not pretty when you have a 100 files
> > > > >
> > > > > Dave
> > > > >
> > > > >> a simple fix after dl is to open it up in vi and do
> > > > >>
> > > > >> :%s,^V^M,,g
> > > > >>
> > > > >> -r
> > > >
> > > > The following perl command issued on the CLI will get
> > > > rid of these annoying ^Ms.
> > > >
> > > > # perl -e -i -p 's/\r\n/\n/s' filename
> > > >
> > > > you can use wildcards too.
> > > >
> > > > There are also ports to solve these problems, like dos2unix.
> > > >
> > > > regards
> > > > --
> > > > Andreas "ant" Ntaflos
> > > > ntaflos.andreas@gmx.net
> > > > Vienna, AUSTRIA
> > > >
> > > > To Unsubscribe: send mail to majordomo@FreeBSD.org
> > > > with "unsubscribe freebsd-questions" in the body of the message
> > >
> > > To Unsubscribe: send mail to majordomo@FreeBSD.org
> > > with "unsubscribe freebsd-questions" in the body of the message
> > >
> > >
> > > To Unsubscribe: send mail to majordomo@FreeBSD.org
> > > with "unsubscribe freebsd-questions" in the body of the message

-- 
Brian T. Schellenberger . . . . . . .   bts@wnt.sas.com (work)
Brian, the man from Babble-On . . . .   bts@babbleon.org (personal)
                                        http://www.babbleon.org

-------> Free Dmitry Sklyarov!  (let him go home)  <-----------

http://www.eff.org                 http://www.programming-freedom.org 

[-- Attachment #2 --]
#! /usr/bin/perl

if ($ARGV[0] eq '-c')   # Special CD-ROM mode
{
    $cdrom = 1;
}

if ($ARGV[0] eq '-n') 
{
    shift;
    $putname = 1;
}

foreach (@ARGV)
{
    # unmsdos accpets a "quoting" convention of angle-brackets to
    # quote names.  If it has 'em, strip 'em.  If it has the leading,
    # but not the trailing, bracket then save this one and come 
    # around again.  First see if we are continued from before.

    if ($pending)
    {
        $_ = $pending . ' ' .$_;
        $pending = "";
    }

    if (/^</)
    {
        if (/>$/)
        {
            s/^<//;
            s/>$//;
        }
        else
        {
            $pending = $_;
            next;
        }
    }

    $path = $_;
    $path = "."  if (! /\//);
    $path =~ s|/[^/]*$||;
    s|^.*/||;
    $newname = $_;

    if ($cdrom)
    {
        next if (length > 12 || /[a-z]/);  # 12 = 8.3 (12345678.ABC)
        goto justLowercase;
    }

    # If it's one of my "rated" names, seperate out the rating part.
    # Always take out leading paths for file renames.

    $prefix = "";
    if (/^(.*\/)?(\w+-\w+-\w+:)?/)
    {
        $prefix = $&;
        $_ = $';
    }

    # name conversions.
    $newname =~ tr/\x80-\xFF/\x00-\x7F/;
    $newname =~ s/[\x00- ]/_/g;
    $newname =~ s/[[\]]/_/g;
    $newname =~ s/\&/+/g;
    $newname =~ s/\s/_/g;
    $newname =~ s/^~/_/g;
    $newname =~ s/^\+/p_/g;
    $newname =~ s/([^.])~/$1-/g;
    $newname =~ s/;/@/g;
    $newname =~ s/[ `'"!&*$;]/_/g;
    $newname =~ s/\$/_/g;
    $newname =~ s/[:{}|()<>]/-/g;
    $newname =~ s/^-/_/;
    $newname =~ s/\?/q/g;
    $newname =~ s/#/=/g;
    $newname =~ s/\\/_/g;

justLowercase:
    $newname =~ tr/A-Z/a-z/;

    if ($putname)
    {
        print "$newname\n";
        next;
    }

    $newname = $path . "/" . $newname;
    $_ = $path . "/" . $_;

    if ($newname ne $_)
    {
        print "$_ -> $newname\n";
        if (-e $prefix . $newname)
        {
            print STDERR "$newname already exists; can't rename\n";
        }
        else
        {
            if (rename($prefix . $_, $prefix . $newname))
            {
                $_ = $newname;
            }
            else
            {
                print STDERR "Rename to $newname failed.\n";
            }
        }
    }

    # Changes to file contents . . .
    $_ = $prefix . $_;
    if (-T $_ && !$cdrom)
    {
        if (system('uncrnl', $_)/256 == 0)
        {
            print "Uncrnl'ed $_\n";
        }
        else
        {
            print STDERR "Uncrnl $_ failed.\n";
        }
    }
}


[-- Attachment #3 --]
#! /bin/tcsh -f
# set echo

if ("$1" =~ */*) then
    set plc = $1:h
    set file = $1:t
    cd $plc
else
    set file = $1
endif

mv $file }$file}
tr < }$file} > $file -d '\r'

[-- Attachment #4 --]
#! /bin/tcsh -f
# set echo

set silent = 0
if ("$1" == "-s") then
    set silent = 1
    shift
endif

if ("$1" == "-m") then
    shift
else
    set nonomatch
endif
set prompt = "> "
source ~/.cshrc

setenv S '$'

set cmd = `echo $2 | sed "s/@/$S/"`

foreach i ($1)
    echo ' '
    echo '>>>' $i '<<<'
    if (! $silent) \
        eval echo i=$i : "$cmd" 
    eval $cmd
end

echo ' '


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?01110422164202.03811>