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>
