48

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?

53

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 to remove?

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
    it might be worth mentioning vi/vim :set ff=unix as well – steeldriver Jun 5 '14 at 17:27
  • @steeldriver, done :) – Ramesh Jun 5 '14 at 17:29
  • 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" – andrew lorien Jul 10 '17 at 2:33
6

Code

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

While typing ^M in the command, do not use shift+6 & M. You should use ctrl+v+m.

  • 1
    Welcome to Unix Stackexchange! Please, note how to format the body for code. No need for thanks and others in the end. – Léo Léopold Hertz 준영 Feb 23 '17 at 6:57
0

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.

  • 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) – dave_thompson_085 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.