Crlf

From miki
Revision as of 20:51, 18 July 2011 by Mip (talk | contribs) (→‎Detection)
Jump to navigation Jump to search

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'

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