56

TexPad is creating it. I know that it is under some deadkey. I just cannot remember it is name.

The blue character:

enter image description here

I just want to mass remove them from my document.

How can you type it?

1
68

It is known as carriage return.

If you're using vim you can enter insert mode and type CTRL-v CTRL-m. That ^M is the keyboard equivalent to \r.

Inserting 0x0D in a hex editor will do the task.

How do I remove it?

You can remove it using the command

perl -p -i -e "s/\r//g" filename

As the OP suggested in the comments of this answer here, you can even try a `

dos2unix filename

and see if that fixes it.

As @steeldriver suggests in the comments, after opening the vim editor, press esc key and type :set ff=unix.

References

https://stackoverflow.com/questions/1585449/insert-the-carriage-return-character-in-vim

https://stackoverflow.com/a/7742437/1742825

-ksh: revenue_ext.ksh: not found [No such file or directory]

3
  • Thanks, @Ramesh. I have no idea how to do those keyboard codes. You're a good guy.
    – mikeserv
    Jun 6 '14 at 0:20
  • 1
    @mikeserv, use <kbd> key </kbd> to use the keyboard symbols. :)
    – Ramesh
    Jun 6 '14 at 0:31
  • 2
    +1 for answering the actual question "what is it called" Jul 10 '17 at 2:33
8

Code

sed -i 's/^M//' filename.txt

While typing ^M in the command, do not use ^M as that only inserts what is displayed, not what causes it to be displayed; use CtrlV CtrlM.

0
2

you can also do this with sed

 sed -i "s/\r//g" filename
-1

As Ramesh notes, CTRL+V CTRL+M should get you the literal character - though you're not limited to doing this only in vim - you should be able to do the same on any canonical mode tty.

cat ./file | tr -d '\r' >./file

...might do the job.

4
  • 1
    you're reading from and writing to the same file, would this not cause a problem
    – iruvar
    Jun 5 '14 at 19:20
  • @1_CR Im reading from the |pipe file. Its true, an intermediate tmp file would be more robust - but the buffer in the pipe should be enough. Still, in case it isnt, tr -d '\r' <<FILE >./file\n$(cat ./file)\nFILE\n would be a sure thing - provided the file contains no \000 characters, that is.
    – mikeserv
    Jun 5 '14 at 19:28
  • This will more than likely erase ./file before cat has a chance to read it. All commands of a pipeline are launched in parallel and redirections are processed by the shell before the affected command is executed.
    – jlliagre
    Feb 23 '17 at 8:33
  • @mikeserv re the heredoc-containing-$(cat) fix: or (significant) trailing empty lines or unterminated last line, or more data than fits in available memory. (rm file; tr -d '\r' >file) <file avoids those, if recreating the file is okay (resets owner/group/permbits/ACL/context/etc) Feb 23 '17 at 12:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.