How to Remove ^M Character
There are a lot of other systems out there other than Linux, so if you have a file from, let’s say a DOS system, with extra ^M (caret M) characters at the end, you can correct it using vi. The tough part is, you will not be able to see these extra characters immediately, unless you encounter something like this:
$ ./check_summary.pl --help
-bash: ./check_summary.pl: /usr/bin/perl^M: bad interpreter: No such file or directory
(Note: check_summary is a Nagios plugin that I am currently testing.)
See the ^M character at the end? It is called the DOS line break. Unfortunately, Linux is not able to recognize these line breaks so you have to delete them. With vim. Yes, with vim, or with any editor you want, but in this post, I will show how to do it in vi.
First, open up your file where there is an extra ^M characters. While in command mode, type the following:
:%s/^V^M//g
The ^V is a CONTROL+V character and ^M is a CONTROL+M. When you type this, it will look like this:
:%s/^M//g
This command searches for ^M character (the CONTROL+V escapes a control character) the replaces it with null. After doing this, save and exit.
Another way to fix this is to use the dos2unix command like so:
$ dos2unix [file]
This might work, but I have not tried yet. Have you tried using dos2unix? Did it work? Let me know in the comments section.
Using Perl to Replace Text in Multiple Files
You can search and replace text inside multiple files using Perl. This is how you do it:
$ perl -i -pe 's/Windows/Linux/;' test*
This command will search for the word ‘Windows’ inside all files that begin with ‘test’. When it finds one, it will substitute it with the word ‘Linux’. This is useful if you have multiple files that contain the same text. Remember that you can use regular expressions to make searching flexible.
Tip: Using find Command in Linux
Doing command-line stuff in Linux is fun. It may be intimidating for some at first, now that we are in the age where GUI is no longer an option. But with CLI, we can do so many things that can be accomplished faster if we know how to utilize the features of a certain command.
One command that is very flexible is find. With find, you can search not only based on filenames, you can also use other identifiers like GUI and UID, timestamps and file types.
Here are some examples of find commands:
This command will find all files in /home directory with .doc as extension and was modified 24 hours ago:
find /home -name *.doc -mtime 1
This one will find the same files, but not directories, and delete them using -exec option (great for disk usage maintenance, but BACKUP first!):
find /home -name *.doc -type f -mtime 1 -exec rm ’{}’ \;
You can also find files owned by a certain UID:
find /tmp -user johndoe find /tmp -uid 502
Or by GID:
find /home/development -gid 1000
You can also search for files and directories with certain permissions:
find . -perm -777
And from those examples, you can build your own command to find what you are looking for.
Search PinoyTux
Subscribe to Email Feeds
Blog Lounge
Popular Posts
Recent Posts
Drop your Card Here
Recent Comments
- smeaferrepove on Howto: Install yum On RHEL 4
- Anidich1 on Tip: Add User and Generate Password Script
- Tom S on Cebu Pacific Sucks
- kadersardar on PinoyTux Spreads Some CommentLuv
- Steve on Creative Labs Threatens Third Party Driver Modder








