Stripping ^M from your filesIf you have transferred a file from MS Windows to FreeBSD, you might find the file looks like this:
<html>^M ^M <head>^M <title>The FreeBSD Diary -- Article Maintenance</title>^M <meta name="description" content="BLANK">^M <meta name="keywords" content="FreeBSD">^M
That "^M" is control-M, which is a carriage return, and is not needed in Unix file systems. To remove this extra character, run the following script:
perl -pi -e "s:^V^M::g" <filenames>
where ^V is actually control-V and ^M is actually control-M (you must type these yourself, don’t just copy and paste this command). Control-V will not be displayed on your screen.
<filenames> is the list of files to be converted.
NOTE: I’m told that if you use ASCII mode to transfer your files, this problem won’t occur.
Other optionsI like people writing in with options. Here are two other ways to get rid of the ^M characters:
- Marc Silver writes that this will work:
cat <filename1> | tr -d "^V^M" > <newfile>
Remember to actually type control-V then control-M. Don’t just copy and paste the above.
- Trevor R.H. Clarke gave this example:
sed -e "s/^V^M//" <filename> > <output filename>
And remember to actually type control-V then control-M. Don’t just copy and paste the above.
- Mario Sergio Fujikawa Ferreira writes of this vi solution.
- hit the ESC key
remember the colon ( : ) at the start of step two.
- Marius Strom mentions this port:
cd /usr/ports/converters/unix2dos make && make install
This port will also install dos2unix, which is useful for removing the control-M characters.
- Oliver Crow reports this:
col <infile >outfile
[ed. note: make sure infile and outfile are not the same file or you’ll lose the contents]
- KeMpKeS reports this:
Here’s one you might want to add to the removing ^M from files page: open the file in pico, make a trivial change, then change it back (like add a space then delete it), then try to quit pico. When it asks you if you want to save changes, say yes. That”ll do it.