Crlf: Difference between revisions
Jump to navigation
Jump to search
(Conversion) |
m (→Conversion) |
||
Line 46: | Line 46: | ||
* Using command '''<tt>tr</tt>''': |
* Using command '''<tt>tr</tt>''': |
||
<source lang="bash"> |
<source lang="bash"> |
||
tr -d '\r' |
tr -d '\r' < file # Delete RETURN (i.e. CR, ^M, ascii 13) |
||
tr -d '\n' |
tr -d '\n' < file # Delete NEWLINE (i.e. LF, ^J, ascii 10) |
||
</source> |
</source> |
||
Revision as of 22:20, 21 July 2011
Everything about ascii file line termination issue (LF, CR/LF, CR...)
Reference
Miscellaneous
- Normal Linux line ending is LF
- Normal DOS line ending is CR-LF
- In Bash, insert special character with ^V. For instance ^V ^M will insert a CR character
- Alternatively, use something like
r="$(printf "\r")"
, - Or use
echo $'\r'
- Alternatively, use something like
Detection
- Hex dump
hd <file>
# 00000000 48 65 6c 6c 6f 0d 0a 48 65 6c 6c 6f 0d 0a 48 65 |Hello..Hello..He|
# 00000010 6c 6c 6f 0d 0a 48 65 6c 6c 6f 0d 0a |llo..Hello..|
# 0000001c
- Use file:
file crlf.txt cr_and_lf.txt lf.txt
# crlf.txt: ASCII text, with CRLF line terminators
# cr_and_lf.txt: ASCII text, with CRLF, LF line terminators
# lf.txt: ASCII text
find . -print0 | xargs -0 file | grep CR # Search all files
- Using GREP:
grep -IUr --color $'\r' # Add -l to have list of files
find . -name "*.[ch]" -print0 | xargs -0 grep -IUl $'\r' # Prefilter files to look at
Conversion
- Using package dos2unix:
dos2unix <file>
unix2dos <file>
mac2unix <file>
unix2mac <file>
- Using command tr:
tr -d '\r' < file # Delete RETURN (i.e. CR, ^M, ascii 13)
tr -d '\n' < file # Delete NEWLINE (i.e. LF, ^J, ascii 10)
- Using Vim:
vim file
:set ff=unix
:wq