66

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

4 Answers 4

79

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, 2014 at 0:20
  • 1
    @mikeserv, use <kbd> key </kbd> to use the keyboard symbols. :)
    – Ramesh
    Jun 6, 2014 at 0:31
  • 2
    +1 for answering the actual question "what is it called" Jul 10, 2017 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
3

you can also do this with sed

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

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, 2014 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, 2014 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, 2017 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, 2017 at 12:37

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .